簡體   English   中英

如何在時間線圖中顯示 Matplotlib 中的所有 Y 軸標簽?

[英]How to show all Y-Axis Labels in Matplotlib in TimeLine Chart?

在下面的代碼中,我繪制了一個時間線圖,但我不知道如何按 integer 類型和標准間隔顯示所有 Y 軸值。 有人知道嗎?

在此處輸入圖像描述

代碼鏈接: https://colab.research.google.com/drive/1Fq91PXlylJMKh6oUpysM95gpLwBfUcGx?usp=sharing

from matplotlib.patches import Patch
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams.update(matplotlib.rcParamsDefault)

fig, ax = plt.subplots(1, figsize=(20,7))
ax.barh(df.year, df.days_start_to_end, left=df.startNum, color=df.color)

xticks = np.arange(0, df.endNum.max()+1, 3)
xticks_labels = pd.date_range(proj_start, end=df.end.max()).strftime("%m/%d ")
xticks_minor = np.arange(0, df.endNum.max()+1, 1)
#ax.set_yticks(np.arange(len(df.year)))
ax.set_xticks(xticks)
#ax.set_xticks(xticks_minor, minor=True)
ax.set_xticklabels(xticks_labels[::3])

c_dict = { 'Perfect': '#4db249', 'Good':'#539de3',
          'Normal':'#ffbd63', 'Severe': '#ff7361', 'Drastic':'#ff2626'}
legendEl = [Patch(facecolor = c_dict[i], label = i) for i in c_dict]
plt.legend(handles = legendEl)

plt.show()

您擁有的日期(年份)只是數字而不是日期時間。 如果您想查看 Y 軸上的所有標簽,只需在繪圖時將該列轉換為字符串即可。 這將告訴 matplotlib 這些是文本,需要繪制為分類數據。 下面是更新的行...請注意,這將 plot 年份沒有小數點。 希望你不需要那個。

ax.barh(df.year.astype('string'), df.days_start_to_end, left=df.startNum, color=df.color)

更新了 plot

在此處輸入圖像描述

暫無
暫無

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

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