绘制python中的条形图

时间:2015-03-05 18:34:06

标签: python matplotlib plot

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

 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

2 个答案:

答案 0 :(得分:2)

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

防止隐藏栏

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

  1. 按顺序绘制它们,从最大到最短。如果您的绘图命令是p3,p2,p4,然后是p1,那么它们将在彼此的上方绘制,而不会覆盖任何一个。

  2. 以不同的方式展开它们。当你正在绘制它们时,你将它们都放在同一点上。如果改变x坐标,例如x1,x2,x3,x4 = range(4),然后将绘图命令更改为,例如p1 = plt.bar(x1, y1, width=width, color='r')然后你不会错过酒吧。

  3. 控制宽度(和高度)

    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。无论是根据具体情况还是通过改变变量本身来改变它,都将控制条的宽度。

    其他两条评论

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

      < / LI>
    2. 如果要显示跨越如此多个数量级的数据,则将y标度设置为对数可能会有所帮助。这可以使用plt.yscale('log',noposy=clip)完成。如果你的y值为0,后一个kwarg会很有用 - 它只是将它从图中剪掉而不是破坏。

答案 1 :(得分:1)

一种简单的方法来绘制级别,并在特定列中显示每个级别的出现次数:在您的情况下,这可能很有用。这里data(DF)的输出列具有两个级别(0)和(1),Y轴显示每个级别的计数。

# Target varible bar chart
def snsplot(t):
    sns.countplot(x=t,data=data,palette='hls')
    print('The target variable',t, 'as shown as bar chart')
    plt.show()
#plt.savefig('count_plot')

snsplot(Target_col_Y)

enter image description here