进行以下csv输入(由于明显的原因,没有包括所有数据点(:
"Date","Production"
"1962-01",589
"1962-02",561
...
"1975-11",797
"1975-12",843
我正在尝试使用按月份分组的方式将以下数据格式化为方框图。但是没有显示01 02。。11 12,我想在1月、2月…在x标签上显示。
为此,我将数据放入一个数据帧中,并将"Date"转换为pd.To_datetime。然后将其设置为索引。
df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index("Date")
然后,我创建了一个名为"Month"one_answers"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);
然而,这似乎是按字母顺序(四月、八月、十二月…(返回标签,而不是按一月、二月、三月等顺序返回。
有没有办法让boxplot按Month列按值排序,但按Alph_Months列设置标签值?
您可以尝试使用plt.xticks
,假设您有以下行:
import matplotlib.pyplot as plt
xticks
函数允许您重命名图形上的x刻度,因此,如果您想根据月份重命名方框图刻度,可以执行以下操作:
plt.xticks([1, 2, 3, ...], ['Jan', 'Feb', ...])
你在绘制方框图后画了这条线。我注意到您正在为DataFrame使用boxplot函数。我不确定plt.xticks
是否可以使用,但它肯定可以在seaborn
和matplotlib
中绘制方框图
如果你想缩短一点,你可以用range(1, 13)
代替[1,2,3,…]