我正在使用Matplotlib绘制直方图。我想直方图的颜色是“ Azure ”。但数据重叠,并产生一个直方图,这是近黑色的颜色。
plt.hist(data, color = "skyblue")
下面是直方图的样子。正如您所看到的,即使我将颜色指定为“ Azure ”,右侧的直方图仍接近黑色。
rekjcdws1#
直方图看起来是黑色的原因是条形周围的线(黑色)占据了大部分空间。选项是通过将线宽设置为零来消除边:
plt.hist(data, color = "skyblue", lw=0)
和/或将边缘颜色设置为与条本身相同的颜色
plt.hist(data, color = "skyblue", ec="skyblue")
tjrkku2a2#
这个特殊的问题(edgecolor与条颜色不匹配)不再存在(至少在matplotlib 3中是这样)。0),因为除非默认情况下edgecolor与填充颜色匹配。无论如何,绘制直方图的一个更快的方法(边缘颜色并不重要)是绘制轮廓并填充它。
data = (np.random.randn(10000)-2.5)/4 plt.hist(data, bins=50, histtype='step', fill=True, color='skyblue');
另一种方法是使用np.histogram预先计算直方图,使用plt.stairs()绘制轮廓并填充它。
np.histogram
plt.stairs()
plt.stairs(*np.histogram(data, 50), fill=True, color='skyblue')
这两个选项都比单纯的plt.hist()调用快得多,特别是在bin数量很大的情况下。
plt.hist()
2条答案
按热度按时间rekjcdws1#
直方图看起来是黑色的原因是条形周围的线(黑色)占据了大部分空间。
选项是通过将线宽设置为零来消除边:
和/或将边缘颜色设置为与条本身相同的颜色
tjrkku2a2#
这个特殊的问题(edgecolor与条颜色不匹配)不再存在(至少在matplotlib 3中是这样)。0),因为除非默认情况下edgecolor与填充颜色匹配。
无论如何,绘制直方图的一个更快的方法(边缘颜色并不重要)是绘制轮廓并填充它。
另一种方法是使用
np.histogram
预先计算直方图,使用plt.stairs()
绘制轮廓并填充它。这两个选项都比单纯的
plt.hist()
调用快得多,特别是在bin数量很大的情况下。