恼人的奇怪问题,我还没能在这个网站上找到解决方案(虽然问题已经出现)
我正在尝试制作一个直方图,其中垃圾箱具有“条形样式”,其中垂直线分隔每个垃圾箱,但无论我将其更改为hettype构造函数,我都会获得一步填充直方图。
这是我的代码。注意我使用的是通过anaconda安装的jupyter笔记本和python版本2.7.6
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand((100))
bins = np.linspace(0, 2, 40)
plt.title('Relative Amplitude',fontsize=30)
plt.xlabel('Random Histogram')
plt.ylabel('Frequency',fontsize=30)
plt.hist(x, bins, alpha=0.5, histtype='bar')
plt.legend(loc='upper right',fontsize=30)
plt.xticks(fontsize = 20)
plt.yticks(fontsize = 20)
plt.show()
这就是它,我得到一个步骤填充图表,没有垂直线分隔条形。令人讨厌的是我前一段时间没有这个问题,显然已经发生了变化,我不知道是什么。我也试过了他的类型='barstacked'。谢谢你的帮助
答案 0 :(得分:29)
使用您的示例:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand((100))
bins = np.linspace(0, 2, 40)
plt.title('Relative Amplitude',fontsize=30)
plt.xlabel('Random Histogram')
plt.ylabel('Frequency',fontsize=30)
plt.hist(x, bins, alpha=0.5, histtype='bar', ec='black')
plt.legend(loc='upper right',fontsize=30)
plt.xticks(fontsize = 20)
plt.yticks(fontsize = 20)
plt.show()
产生以下图像:
关键区别在于使用ec
关键字参数。这是“edgecolor”的缩写。在plt.hist
的文档中,它表示除了列出的所有关键字参数外,plt.hist
还会为Patch
初始化程序提供关键字参数。 edgecolor
是其中一个关键字参数。这就是为什么它没有在plt.hist
的文档中明确列出。绘图中的所有条形都是单独的Patch
对象,因此您要说您希望所有条形都使用黑色轮廓(或matplotlib术语中的edgecolor
)绘制。
答案 1 :(得分:1)
如果我为 edgecolor
参数和 color
参数提供不同的颜色,它对我有用。
例如:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand((100))
bins = np.linspace(0, 2, 40)
plt.title('Relative Amplitude',fontsize=30)
plt.xlabel('Random Histogram')
plt.ylabel('Frequency',fontsize=30)
plt.hist(x, bins, alpha=0.5,edgecolor='black',color='steelblue', histtype='bar')
plt.legend(loc='upper right',fontsize=30)
plt.xticks(fontsize = 20)
plt.yticks(fontsize = 20)
plt.show()