簡體   English   中英

Matplotlib條形圖重疊的酒吧

[英]Matplotlib Bar Graph Overlapping of Bars

所以我創建了一個條形圖,但我遇到了重疊條的問題。 我認為問題在於邊緣重疊,但是當我改變edges='none'這些條很簡單。

我相信我的數學是正確的,假設寬度為.3的3個條應該沿着x軸移動.3並且在每組條之間留下.1間隙。 (注意x增加1)

我不明白為什么這些柱子最終重疊並且重疊似乎在圖表的末尾附近變得更糟。

ax = plt.subplot(111)
ax2 = ax.twinx()
ax.bar(x,EWtot,width=.3, color='b', align='center',label='Eyewall',edgecolor='b')
ax.bar(x + 0.3,ICtot,width=.3, color='g', align='center',label='Inner Core',edgecolor='g')
ax.bar(x + 0.6,RBtot,width=.3, color='r', align='center',label='RainBand',edgecolor='r')

我認為它是兩個因素的結合。 首先,您可以通過提供一些額外的數字或將它們指定為分數來稍微提高寬度和x位置的精度。

其次,邊緣的使用( linewidth > 0 )使得條形圖默認重疊一點,邊緣居中,因此邊緣的一半在條形圖內部,另一半在外部。 完全禁用邊緣可防止任何重疊。

增加線寬和設置alpha可能會幫助您確定正在發生的事情。

以下示例說明了這一點:

n = 10
x = np.arange(n)
a = np.random.rand(n)
b = np.random.rand(n)
c = np.random.rand(n)

fig, axs = plt.subplots(2,1,figsize=(10,8))

axs[0].bar(x, a, width=0.3, facecolor='b', edgecolor='b', linewidth=3, alpha=.5)
axs[0].bar(x+0.3, b, width=0.3, facecolor='r', edgecolor='r', linewidth=3, alpha=.5)
axs[0].bar(x+0.6, c, width=0.3, facecolor='g', edgecolor='g', linewidth=3, alpha=.5)

axs[1].bar(x, a, width=1/3, facecolor='b', alpha=.5, linewidth=0)
axs[1].bar(x+1/3, b, width=1/3, facecolor='r', alpha=.5, linewidth=0)
axs[1].bar(x+2/3, c, width=1/3, facecolor='g', alpha=.5, linewidth=0)

在此輸入圖像描述

暫無
暫無

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

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