为xp轴指定matplotlib.pyplot直方图的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为xp轴指定matplotlib.pyplot直方图的值相关的知识,希望对你有一定的参考价值。
给定一个数据集,我想在一个图中创建三个直方图。数据(只是一个巨大的数据集的小片段,会打破模具)看起来像这样:
x, y1, y2, y3
2.0466115, 0, 0, 0
2.349824, 0, 0, 0
2.697959, 0, 0, 0
3.097671, 0.195374, 0.191008, 0.167979
3.5566025, 0.522926, 0.511492, 0.426324
4.083526, 0.691916, 0.6774083,0.5790586666666666
4.688515, 0.8181206,0.801901, 0.6795873333333334
5.3831355, 0.8489766,0.833376, 0.707486
6.1806665, 0.809022, 0.795524, 0.6750806666666667
我的所有x值都相同,y1
,y2
和y3
代表三个不同的y值。我正在为每个列创建一个单独的列表,并将它们作为pyplot.hist
的参数传递。你可以在这里看到我的代码:
import numpy as np
from matplotlib import pyplot
from excel_to_csv import coordinates
y1 = coordinates(1) #another method, which creates the list out of the column
y2 = coordinates(2)
y3 = coordinates(3)
bins = np.linspace(0, 10, 150)
pyplot.hist(y1, bins, alpha=0.5, label='y1')
pyplot.hist(y2, bins, alpha=0.5, label='y2')
pyplot.hist(y3, bins, alpha=0.5, label='y3')
pyplot.legend(loc='upper right')
pyplot.show()
此代码生成以下图(关于实际数据集):就我研究而言,您为x轴的范围创建bins
。但我没有这样做,而是想把我的x值放在那里。
答案
您可以使用np.histogram
然后绘制直方图的值:
import numpy as np
import matplotlib.pyplot as plt
# Generate sample data
y1 = np.random.normal(3,1,10000)
y2 = np.random.normal(5,1,10000)
y3 = np.random.normal(7,1,10000)
bins = np.linspace(0, 10, 150)
x = np.linspace(0,10000,149)
# Plot regular histograms
plt.figure()
plt.hist(y1, bins, alpha=0.5, label='y1')
plt.hist(y2, bins, alpha=0.5, label='y2')
plt.hist(y3, bins, alpha=0.5, label='y3')
plt.ylabel('Frequency')
plt.xlabel('Bins')
plt.legend(loc='upper right')
plt.show()
# Compute histogram data
h1 = np.histogram(y1, bins)
h2 = np.histogram(y2, bins)
h3 = np.histogram(y3, bins)
# Compute bin average
bin_avg = bins[0:-1] + bins[1] - bins[0]
# Plot histogram data as a line with markers
plt.figure()
plt.plot(bin_avg, h1[0], alpha=0.5, label='y1', marker='o')
plt.plot(bin_avg, h2[0], alpha=0.5, label='y2', marker='o')
plt.plot(bin_avg, h3[0], alpha=0.5, label='y3', marker='o')
plt.ylabel('Frequency')
plt.xlabel('Bins')
plt.legend(loc='upper right')
plt.show()
绘制分箱数据与x的关系是没有意义的,因为一旦数据被直方图转换后,它与x的关系就不再相同了。
以上是关于为xp轴指定matplotlib.pyplot直方图的值的主要内容,如果未能解决你的问题,请参考以下文章