簡體   English   中英

從 matplotlib 條形圖中刪除空白空間

[英]Remove empty space from matplotlib bar plot

我將兩個條形圖繪制到同一個軸上,其中 x 軸包含從 0 向下的值。 但是,我的數據中有很大的差距(例如從 0 到 -15),並且想要刪除空白空間,以便軸從 0 到 -15 之間沒有空格 - 顯示在此圖像上:

在此處輸入圖片說明

理想情況下,我想為所有差距做到這一點。 我已經嘗試過plt.axis('tight')fig.tight_layout() ,但它們都沒有奏效。

編輯:一個小例子的示例代碼

keys = [0, -15, -16, -17]
values = [3, 5, 2, 1]

fig, ax = plt.subplots(ncols=1)
fig.tight_layout()

ax.bar(keys, values, 0.8, color='g', align='center')

ax.set_xticks(keys)
plt.setp(ax.xaxis.get_majorticklabels(), rotation=90 )

在此處輸入圖片說明

您將需要創建一個斷軸。

請參閱文檔: https : //matplotlib.org/3.1.0/gallery/subplots_axes_and_figures/broken_axis.html

  • 解決該問題的最簡單方法是針對x繪制values ,該x是對應於keys len的范圍,然后更改xticklabels
import matplotlib.pyplot as plt

keys = [0, -15, -16, -17]
values = [3, 5, 2, 1]

fig, ax = plt.subplots()

# create the xticks locations
x = range(len(keys))

ax.bar(x, values, 0.8, color='g', align='center')

# set the ticks and labels
ax.set_xticks(x)
_ = ax.set_xticklabels(keys)

在此處輸入圖片說明

排序

keys = [0, -15, -16, -17]
values = [3, 5, 2, 1]

# zip, sort and unpack
keys, values = zip(*sorted(zip(keys, values)))

fig, ax = plt.subplots()

# create the xticks locations
x = range(len(keys))

ax.bar(x, values, 0.8, color='g', align='center')

# set the ticks and labels
ax.set_xticks(x)
_ = ax.set_xticklabels(keys)

在此處輸入圖片說明

暫無
暫無

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

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