This question already has an answer here:

Bar chart in matplotlib shows less bars when having big range on x coordinates
(1个答案)
问题与matplotlib条形图有关。具体来说,当我绘制条形图时,有些条形图是不可见的。
点和条使用相同的数据序列,所以应该在相同的位置
是的。
我不知道这个问题的根源是什么,这就是为什么我要发布这个问题。
我还注意到,对于同一个图,当我将窗口放大到全屏时,丢失的条神奇地出现了
与第一张图片中的数据系列相同,只是全屏窗口
是的。
同样的情况也发生在我改变情节的颜色时,所以假设我使用:
artist = plot.bar(x_data_series, y_data_series, color="black")

现在我有一个不完整的图表,但当我使用(只是设置第二次后的颜色):
artist = plot.bar(x_data_series, y_data_series, color="black")
matplotlib.artist.setp(artist, color="black")

我明白了:
现在所有的条都可见了
是的。
当我放大这个不完整的图表时也会发生同样的情况:
这里也可以看到所有的条形图
是的。
更重要的是“隐形条”,当它们可见时,它们看起来比其他条粗一些,但是它们在艺术家属性中的宽度与您在这里看到的一样:
其中一根是较厚的,另一根是“正常”的,宽度都是0.8
是的。
为了给你更多的信息,这是一个嵌入在tkinter中的图。
下面是图形、画布和轴(父帧只是放置绘图的帧):
figure = Figure(dpi=100)
plot = figure.add_subplot(111)
canvas = FigureCanvasTkAgg(figure, parent_frame)

我发现的“变通方法”对我来说并不令人满意,我真的很想找到问题的根源,再加上宽度问题是我无法解决的。

最佳答案

条宽0.8表示条宽为0.8个数据单元。在约500像素宽的图形上显示约500个数据单元意味着条形图约0.8像素宽。或者换言之,看到这个条的几率是80%,或者平均来说,每五个条可能不会显示一次。因此,结果是相当令人期待的。
放大时也一样。很有可能看到一个像素的条形图,但是有些条形图是2像素宽的,因为条形图的宽度介于1到2像素之间。
使用setp(artist, color="black")时看到每个条的原因是颜色应用于条及其边缘边缘是1点,即比像素稍大一点,这样每个条都是可见的。
最后看起来你要么想要一个条形图。在这种情况下,使条形图成为一个真正的条形图,其宽度以数据单位表示。
或者,您可能需要一个折线图。也就是说,在这里绘制一个stem图可能是有意义的。

10-05 23:17
查看更多