[英]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。 有兩種方法可以解決此問題:
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)
按從大到短的順序排列它們。 如果您的繪圖命令是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)。
如果您的語句是詢問如何為誤差線設置不同的寬度,則可以在plt.bar()
使用width=
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很有用-它將只是從圖中剪切而不是破壞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.