繁体   English   中英

如何设置特定的 x 轴标签以在 pandas 箱线图上显示非字母顺序?

[英]How to set specific x axis labels in to show non alphabetical order on a pandas boxplot?

采用以下 csv 输入(由于显而易见的原因未包括所有数据点):

"Date","Production"
"1962-01",589
"1962-02",561
...
"1975-11",797
"1975-12",843

我正在尝试使用按月分组在箱线图中格式化以下数据。 但是我不想显示 01 02.. 11 12,而是希望它在 x label 上显示一月、二月……。

为此,我将数据放入 dataframe 并将“日期”转换为 pd.to_datetime。 然后将其设置为索引。

df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index("Date")

然后,我创建了一个名为“Month”和“Alph_Month”的新列

df["Month"] = df.index.month
df["Alph_Months"] = df.index.strftime('%B')

此时我有一个如下所示的数据集:


      Production    Month   Alph_Months
Date            
1962-01-01  589    1        January
1962-02-01  561    2        February
1962-03-01  640    3        March
1962-04-01  656    4        April

要创建箱线图,我尝试了以下操作:

df[['Production', 'Alph_Months']].boxplot(figsize=(16,6),by='Alph_Months', grid=True);

但是,这似乎按字母顺序(四月、八月、十二月...)而不是一月、二月、三月等的顺序返回标签。

有什么方法可以让箱线图按月列排序顺序值,但 label 值由 Alph_Months 列设置?

您可以尝试使用plt.xticks假设您有以下行:

import matplotlib.pyplot as plt 

xticks function 允许您重命名图表上的 x 刻度,因此如果您想根据月份重命名箱形图刻度,您可以执行以下操作:

plt.xticks([1, 2, 3, ...], ['Jan', 'Feb', ...])

在绘制箱线图后放置这条线。 我确实注意到您正在使用箱线图 function 作为 DataFrame。我不确定plt.xticks是否适用于此,但它肯定适用于绘制箱线图seabornmatplotlib

如果你想缩短一点,你可以用range(1, 13)替换 [1, 2, 3, ...]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM