簡體   English   中英

在python中繪制條形圖

[英]Plotting bar plot in python

我正在嘗試繪制具有多種顏色的單個條形圖...

 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丟失

我假設您的代碼與您輸入的代碼不完全相同,例如, np.range(1)返回一個錯誤,並且y4 plot命令中包含未封閉的字符串。 因為進行一些小的編輯,我可以重現您的情節,但我的顏色與您的顏色不同。 如果p3的顏色為“ b”,而p4的顏色為“ g”,則可以進行一些簡單的修復。

防止隱藏欄

當您在x = 0繪制條形圖時,它會自動排列在圖形的前面。 如果那意味着它掩蓋了某些東西,那么您的舊數據將被掩蓋。 在這種情況下,您將在頂部y2上繪制y3。 有兩種方法可以解決此問題:

  1. 使用zorder kwarg設置事物顯示的順序。 具有zorder=5的事物出現在具有zorder=4的事物zorder=4 文檔上的默認設置為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) 如果您的y值為0,則后一個kwarg很有用-它將只是從圖中剪切而不是破壞。

一種簡單的方法來繪制級別,並在特定列中顯示每個級別的出現次數:在您的情況下,這可能很有用。 在這里,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)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM