Python:matplotlib 条形图的奇怪行为

Python : strange behavior with matplotlib barchart

我在 ipython 笔记本中使用 matplotlib 时有一个奇怪的行为:当我更改条形图的属性 "color" 时,结果很难看,我有一些红色的条形图和其他一些红色的条形图黑色的。只有当我要显示大量条形 (>100) 时才会发生这种情况。

您可以执行下面的代码来重现问题,使用 dataPoints 参数来查看柱数的效果:

import random
import matplotlib.pyplot as plt

dataPoints = 400
data = random.sample(range(300, 1000), dataPoints)
xCoords = range(dataPoints)

fig = plt.figure(figsize=[13,9])
plt.bar(xCoords,data,color='red')
plt.show()

这是一个结果示例:

不是pyplot的问题,也不是你的代码或者你的版本的问题iPython。

只是分辨率的问题。因为你添加了这么多 dataPoints(在你的例子中是 400),你创建了太多的垃圾箱!!这使得它在生成的默认图中重叠。

200 dataPoints 的默认条形图如下所示

但是当你放大看的时候,你可以看到你的垃圾箱实际上是分开的,黑线现在看不清楚了。

上面是你的程序和200一样的执行dataPoints.

如果放大这些条,您会发现实际上没有黑条。您看到的黑色是条形周围的黑色边框和插值以适合屏幕像素的结果。

要使图像中只有红色,您可以使用

将边框颜色更改为红色
plt.bar(xCoords, data, color='red', edgecolor='red')