我正在尝试用多种颜色绘制单个条形图......
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()
1)这是一个非常丑陋的情节。如何控制情节的宽度
2)情节不对..缺少y2
答案 0 :(得分:2)
我假设您的代码与您输入的代码不完全相同,例如,np.range(1)
会返回错误,并且您的y4 plot命令中有一个未关闭的字符串。因为,进行一些小的编辑,我可以重现你的情节,除了我的颜色与你的颜色不同。如果p3的颜色是' b'并且p4' s' g'然后你可以做一些简单的修复。
防止隐藏栏
当您在x = 0处绘制条形图时,它会将自己排列在图形的前面。如果这意味着它掩盖了某些内容,那么您的旧数据将被掩盖。在这种情况下,您将y3绘制在y2上方。有两种方法可以解决这个问题:
按顺序绘制它们,从最大到最短。如果您的绘图命令是p3,p2,p4,然后是p1,那么它们将在彼此的上方绘制,而不会覆盖任何一个。
以不同的方式展开它们。当你正在绘制它们时,你将它们都放在同一点上。如果改变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)。
如果您的陈述是在询问如何为错误栏设置不同的宽度,那么您可以在width=
中使用plt.bar()
kwarg。现在,它被设置为0.3,因为您之前定义了变量width=0.3
。无论是根据具体情况还是通过改变变量本身来改变它,都将控制条的宽度。
其他两条评论
如果您只是在一个点上绘制一个点,那么您实际上并不需要将它们作为列表。您可以使用plt.bar(2,4)
生成x = 2且高4单位的条形图(这也表明您不需要设置p1 = plt.bar
...)
如果要显示跨越如此多个数量级的数据,则将y标度设置为对数可能会有所帮助。这可以使用plt.yscale('log',noposy=clip)
完成。如果你的y值为0,后一个kwarg会很有用 - 它只是将它从图中剪掉而不是破坏。
答案 1 :(得分:1)