簡體   English   中英

如何在Matplotlib條形圖中刪除寬度不等的條之間的間隙

[英]How to remove gaps between bars with unequal widths in Matplotlib bar chart

我正在嘗試在matplotlib(或其他python繪圖庫)中創建一個metrit-order供應曲線條形圖。

每個條形的寬度表示觀察的大小(在這種情況下,安裝的屋頂太陽能),y軸表示成本,X軸表示在特定成本或低於特定成本的所有觀測的累積大小。 這會創建一個如下所示的供應曲線:

在此輸入圖像描述

請注意,每個條形的寬度都不相同,並且觀察結果的排序使得任何條形圖都不會比其左邊的任何條形條紋更短。

這樣的功能是否存在於任何繪圖包中,或者我應該編寫一個腳本,根據兩邊的條形寬度動態計算每個條的必要位置?

這是一個快速的解決方案,我把它放在一起,雖然我覺得在matplotlib中可能存在gaps=0選項,但我找不到文檔。

fig, ax = plt.subplots()

cost = [1, 1.5, 2, 3, 4]
width = [1.0, 5.0, 10.0, 15.0, 10.0]
y_pos = [1,2,3,4,5]
colors = ['red','blue','green','red','blue']
bars = ['A','B','C','D','E']

relative_positions = []
relative_position = 0
previous_width = 0
for w in width:
    print(w, w/2)
    relative_position = float(relative_position + (previous_width/2) + (w/2))
    print(w, relative_position)
    previous_width = w
    relative_positions.append(relative_position)


plt.bar(relative_positions, cost, width=width, color=colors)
plt.xticks(relative_positions, bars)

在此輸入圖像描述

暫無
暫無

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

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