gpt4 book ai didi

python - 在 python 中绘制条形图

转载 作者:太空宇宙 更新时间:2023-11-04 10:26:53 25 4
gpt4 key购买 nike

我正在尝试绘制具有多种颜色的单个条形图...

 import numpy as np
width = 0.3
y1 =[78.0]
y2= [70863.0]
y3 =[138441.0]
y4 =[ 8223.0]

x = np.range(1)

p1 = plt.bar(x, y1, width=width, color='r')
p2 = plt.bar(x, y2, width=width, color='b')
p3 = plt.bar(x, y3, width= width, color='g')
p4 = plt.bar(x, y4, width= width, color='y')

plt.show()

enter image description here

1) 它的情节非常丑陋。我如何控制绘图的宽度

2) 情节不对.. y2 缺失

最佳答案

我假设您的代码与您输入的代码不完全相同,例如,np.range(1) 返回错误并且您有一个未闭合的字符串在你的 y4 plot 命令上。因为,做一些小的编辑,我可以重现你的情节,除了我的颜色和你的不同。如果 p3 的颜色是 'b' 而 p4 的颜色是 'g',那么你可以做一些简单的修复。

防止隐藏栏

当您在 x = 0 处绘制条形图时,它会自行排列在您的图的前面。如果这意味着它掩盖了某些东西,那么您的旧数据将被掩盖。在这种情况下,您在顶部 y2 上绘制 y3。有两种方法可以解决此问题:

  1. 使用zorder kwarg 设置事物出现的顺序。例如,zorder=5 的事物出现在 zorder=4 的事物之上。参见 the documentation在 zorder 的默认值上。在这个特定的例子中,你会想要
    p1 = plt.bar(x, y1, width=width, color='r',zorder=4) 
p2 = plt.bar(x, y2, width=width, color='b',zorder=2)
p3 = plt.bar(x, y3, width= width, color='g',zorder=1)
p4 = plt.bar(x, y4, width= width, color='y',zorder=3)
  1. 按从大到短的顺序绘制它们。如果您的绘图命令是 p3、p2、p4,然后是 p1,那么它们将相互叠加绘制,而不会覆盖任何一个。

  2. 以不同方式放置它们。当您当前绘制它们时,它们都位于同一点。如果您改变 x 坐标,例如 x1,x2,x3,x4 = range(4) 然后将绘图命令更改为,例如p1 = plt.bar(x1, y1, width=width, color='r') 那么您将不会丢失条形。

控制宽度(和高度)

Matplotlib 使用 plt.xlim() 和 plt.ylim() 控制绘图的范围。要将绘图的 x 轴设置为从 0 到 4,您可以使用 plt.xlim(0,4)。同样,如果您想在绘图顶部添加一些空白区域以改善外观,您可以使用 plt.ylim(0, 150000)。

如果您的语句是询问如何为错误栏设置不同的宽度,那么您可以在 plt.bar() 中使用 width= kwarg。现在,它被设置为 0.3,因为您之前定义了变量 width=0.3。改变它,无论是根据具体情况还是通过改变变量本身,都将控制条形的宽度。

另外两条评论

  1. 如果您只是绘制一个由一点构成的条形图,您实际上并不需要将它们设为列表。您可以只使用 plt.bar(2,4) 在 x=2 处生成一个 4 个单位高的条(这也表明您不需要设置 p1 = plt .bar...)

  2. 如果您要显示跨越这么多数量级的数据,将 y 尺度设置为对数可能会有所帮助。这可以通过 plt.yscale('log',noposy=clip) 来完成。后一个 kwarg 在 y 值为 0 的情况下很有用——它只会将其从绘图中剪掉而不是中断。

关于python - 在 python 中绘制条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28885195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com