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

Can*_*uck 14 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() 
Run Code Online (Sandbox Code Playgroud)

这就是它,我得到一个步骤填充图表,没有垂直线分隔条.令人烦恼的是,我之前没有遇到过这个问题,显然已经发生了变化,我不知道是什么.我也试过了histype ='barstacked'.谢谢你的帮助

在此输入图像描述

ngo*_*aum 34

使用你的例子:

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() 
Run Code Online (Sandbox Code Playgroud)

产生以下图像:

在此输入图像描述

关键区别在于使用ec关键字参数.这是"edgecolor"的缩写.在plt.hist它的文档中说,除了列出的所有关键字参数外,plt.hist还为Patch初始化程序提供了关键字参数.edgecolor是其中一个关键字参数.这就是为什么它没有在文档中明确列出的原因plt.hist.绘图中的所有条形都是单独的Patch对象,因此您要说您希望所有条形都使用黑色轮廓(或edgecolor使用matplotlib术语)绘制.

  • 关键区别在于使用`ec`关键字参数.这是'edgecolor`的缺失.在`plt.hist`的文档中,它表示除了列出的所有关键字参数之外,`plt.hist`**还为'Patch`初始值设定项获取关键字参数.`edgecolor`是其中一个关键字参数.这就是为什么它没有在`plt.hist`的文档中明确列出.图中的所有条形都是一个单独的"Patch"对象,所以你要说你想要用黑色轮廓(或matplotlib术语中的`edgecolor`)绘制所有条形图. (4认同)