【问题标题】:Matplotlib bar chart- some bars are not visible and seem to be of different width [duplicate]Matplotlib 条形图 - 一些条形图不可见,并且似乎具有不同的宽度 [重复]
【发布时间】:2018-05-24 05:47:26
【问题描述】:

问题与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)

我发现的“变通办法”对我来说并不令人满意,我真的很想找到问题的根源,加上宽度问题我无法弄清楚。

【问题讨论】:

  • 图片是为任何人嵌入的吗?在当前状态下,我只能使用右键单击和“在新选项卡中打开图像”选项查看图像,并且图像信息被写入两次?

标签: python python-3.x python-2.7 matplotlib tkinter


【解决方案1】:

0.8 的条形宽度表示条形的宽度为 0.8 个数据单位。在图表上显示约 500 个数据单元(约 500 像素宽)意味着条形图宽约 0.8 像素。或者换句话说,看到条形图的机会是 80%,或者平均而言,可能不会显示每五个条形图。所以结果是相当预期的。

放大时也是如此。很有可能会看到条形覆盖 1 个像素,但有些条形的宽度为 2 个像素,因为条形的宽度介于 1 到 2 个像素之间。

您在使用setp(artist, color="black") 时看到每个条形的原因是颜色应用于条形及其边缘。边缘为 1 点,即比像素大一点,这样每个条形都是可见的。

最后,您似乎想要一个条形图。在这种情况下,使条形图成为一个真实的条形图,在数据单元中具有一些有意义的宽度。 或者,您可能需要折线图。 IE。在这里绘制stem 图可能有意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2020-04-23
    • 2019-08-04
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多