繁体   English   中英

集群框的pandas boxplot:如何设置多级x轴标签

[英]pandas boxplot for clustered boxes: how to set multilevel x axis labels

朋友们,

基本上,我有以下熊猫数据框:

 Climate Soil Crop irr Temperate Pcg Cabbage 103.5 Temperate Pcg Cabbage 111.1 Temperate Pcg Cabbage 170.1 Temperate Pcg Cabbage 119.3 Temperate Scg Cabbage 123.8 Temperate Scg Cabbage 132.3 Temperate Scg Cabbage 191.9 Temperate Scg Cabbage 129.4 Temperate Zcg Cabbage 138 Temperate Zcg Cabbage 137 Temperate Zcg Cabbage 205.3 Temperate Zcg Cabbage 155.3 Continental Pcg Cabbage 129.6 Continental Pcg Cabbage 224.9 Continental Pcg Cabbage 259.7 Continental Pcg Cabbage 142.6 Continental Scg Cabbage 151.6 Continental Scg Cabbage 254.3 Continental Scg Cabbage 283.5 Continental Scg Cabbage 162.1 Continental Zcg Cabbage 158.1 Continental Zcg Cabbage 275.7 Continental Zcg Cabbage 290.8 Continental Zcg Cabbage 180.1 Subtropical Pcg Cabbage 441 Subtropical Pcg Cabbage 515.4 Subtropical Pcg Cabbage 554.6 Subtropical Pcg Cabbage 495.2 Subtropical Scg Cabbage 465.7 Subtropical Scg Cabbage 538.2 Subtropical Scg Cabbage 567.8 Subtropical Scg Cabbage 510.1 

我想绘制按气候和土壤类型分组的“ irr”变量。 使用下面的python代码,我设法得到了想要的东西:

 fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 7)) axes = axes.reshape(-1) # linearise axes 2d array for easy looping for i, crp in enumerate(["Cabbage", "Green beans", "Potato", "Wheat"]): data=irrdata[irrdata.Crop==crp] data.boxplot(column='irr', by=['Climate','Soil'], ax=axes[i], grid=False) # axes[i].get_xaxis().set_visible(False) axes[i].set_ylim([0, 600]) axes[i].set_title("") # no title for subplots # adjust location of plots titles axes[i].text(.85, .85, crp, horizontalalignment='center', transform=axes[i].transAxes) # Irrigation requirements by soil type fig.suptitle("") # flush the old super titles axes[0].set_ylabel("Mean irrigation requirement (mm)") # top LEFT axes[2].set_ylabel("Mean irrigation requirement (mm)") # bot left plt.tight_layout() 
好吧,几乎是因为结果不是很令人满意(请注意,我只给出卷心菜的数据,而其他数据的处理方式完全相同):

在此处输入图片说明

您会看到X轴标签如何重叠。 另外,我不想为每种土壤类型重复气候类型。 相反,我想按气候类别对土壤类型进行分组:

 Zcg Scg Pcg Zcg Scg Pcg Zcg Scg Pcg Temperate Subtropical Continental 

我希望气候和土壤按以下顺序出现在图中:

Temperate-> Subtropical->大陆

Zcg-> Scg-> PCG

我正在使用Pandas版本0.15.2

Seaborn会这样做,包括指定非字母顺序:

import seaborn as sns
cbg = pd.read_clipboard()
cbg.columns = ['Climate','Soil','Crop','irr']
sns.factorplot('Soil', x_order=['Zcg','Scg','Pcg'],
               col='Climate', col_order=['Temperate','Subtropical','Continental'], 
               row='Crop', y='irr', kind='box', data=cbg)

在此处输入图片说明

暂无
暂无

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

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