[英]pandas boxplot for clustered boxes: how to set multilevel x axis labels
[英]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
是否适用于此,但它肯定适用于绘制箱线图seaborn
和matplotlib
如果你想缩短一点,你可以用range(1, 13)
替换 [1, 2, 3, ...]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.