无法获得直方图以显示具有垂直线的分离的箱

时间:2017-03-01 21:19:36

标签: python numpy histogram

恼人的奇怪问题,我还没能在这个网站上找到解决方案(虽然问题已经出现)

我正在尝试制作一个直方图,其中垃圾箱具有“条形样式”,其中垂直线分隔每个垃圾箱,但无论我将其更改为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'。谢谢你的帮助

enter image description here

2 个答案:

答案 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() 

产生以下图像:

enter image description here

关键区别在于使用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()