【问题标题】:Python : strange behavior with matplotlib barchartPython:matplotlib 条形图的奇怪行为
【发布时间】:2015-01-20 15:05:49
【问题描述】:

我在 ipython 笔记本中使用 matplotlib 时有一个奇怪的行为:当我更改条形图的属性“颜色”时,结果很丑,我有一些红色的条,还有一些黑色的条。仅当我要显示大量条形 (>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()

这是一个结果示例:

【问题讨论】:

    标签: python matplotlib bar-chart ipython-notebook


    【解决方案1】:

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

    这只是分辨率的问题。由于您添加了这么多dataPoints(在您的情况下为 400),因此您创建了太多垃圾箱!这使它在生成的默认图中重叠。

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

    但是当您放大查看时,您可以看到您的垃圾箱实际上是分开的,并且黑线现在不清晰可见。

    上面是你的程序的相同执行 200 dataPoints

    【讨论】:

    • 小修正:它们并没有“消失”,它们仍然存在,因为我认为它们是由于条形的边界,它们显然仍然存在。
    • @Ffisegydd:是的,你是真的。但我认为这是唯一的答案!我将添加建议的编辑
    • 不,我同意你是对的 :) 只是黑色并没有消失,这不再是问题(这更像是一个挑剔的更正,而不是“你错了! " 更正)
    【解决方案2】:

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

    要让图像中只有红色,您可以使用将边框的颜色更改为红色

    plt.bar(xCoords, data, color='red', edgecolor='red')
    

    【讨论】:

    • edgecolor 参数有助于获得更清晰的结果,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多