簡體   English   中英

Python:從負 Y 值開始的 Matplotlib 條

[英]Python: Matplotlib Bars Starting from Negative Y-Values

我正在嘗試使用 Python 中的條形來 plot 負值,它從低負值開始並以給定的負值結束。 這就是它的外觀(Excel-Plot),負值條從 -60 開始:

在這里,“-60”處的水平軸交點的定義起到了作用。

我的代碼:

import matplotlib.pyplot as plt
import pandas as pd
f = pd.DataFrame({"x":range(9), "y": [-21,-24,-27,-30,-33, -36,-39,-42,-45 ]})
plt.bar(f.x, f.y, bottom= -60)
plt.gca().invert_yaxis()
plt.show()

顯示:

代碼結果

條形圖從 -60 開始,但反向 y 軸值破壞了它。

有沒有辦法讓 plot 條從底部向上增長到負值,並且 y 軸值正確(例如,底部 y 值:-60,頂部 y 值:0)?

您的 y 值為負數,因此條形圖 go 在負方向。 您需要反轉數據的符號。 此外,您仍然希望 y 軸從較低值到較大值 go,因此您不希望它倒置。

plt.bar(f.x, -f.y, bottom= -60)

#plt.gca().invert_yaxis() -> do not invert yaxis - you still want it to go in the same direction

在此處輸入圖像描述

似乎您想要從-60開始並在給定y值處停止的條形圖。 然而, plt.bar()的第二個參數是柱的高度,而不是它的終點。

您可以通過從所需的y值中減去底部來計算高度: fy - (-60)

import matplotlib.pyplot as plt
import pandas as pd

f = pd.DataFrame({"x": range(1, 10), "y": [-21, -24, -27, -30, -33, -36, -39, -42, -45]})
plt.bar(f.x, f.y + 60, bottom=-60, color='darkorange')
plt.ylim(-60, 0)
plt.margins(x=0.02) # reduce the x margins a bit
plt.grid(axis='y', color='grey', lw=0.5)
ax = plt.gca()
ax.set_axisbelow(True)
for s in ['left', 'right', 'top']:
    ax.spines[s].set_visible(False)
plt.xticks(range(1, 10))
plt.show()

結果圖

暫無
暫無

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

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