设置pandas Dataframe Boxplot()的y轴刻度,3个偏差?

时间:2016-11-30 15:36:11

标签: python pandas dataframe boxplot

我试图每月制作一个箱线图表区域,不同的箱图由行业分组(并标记),然后Y轴使用我指定的比例。

在一个完美的世界中,这将是动态的,我可以将轴设置为与整体平均值的一定数量的标准偏差。我可以使用其他类型的动态设置y轴,但我希望它是所有“月度”的标准配置。分组的箱形图创建。我不知道处理这个问题的最佳方法是什么,并且对智慧持开放态度 - 我所知道的是,现在使用的数字对图表来说意义重大。

我已经尝试了各种代码,并且对轴的缩放没有好运,下面的代码就像我可以接近图表一样接近。

这里是一些虚拟数据的链接: https://drive.google.com/open?id=0B4xdnV0LFZI1MmlFcTBweW82V0k

对于我使用Python 3.5的代码:

import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('TkAgg')
import pylab    
df =  pd.read_csv('Query_Final_2.csv')
df['Ship_Date'] = pd.to_datetime(df['Ship_Date'], errors = 'coerce')
df1 = (df.groupby('Industry'))
print(
df1.boxplot(column='Gross_Margin',layout=(1,9), figsize=(20,10), whis=[5,95])
,pylab.show()
)

3 个答案:

答案 0 :(得分:8)

以下是使用解决方案清理的代码版本:

import pandas as pd
import matplotlib.pyplot as plt

df =  pd.read_csv('Query_Final_2.csv')
df['Ship_Date'] = pd.to_datetime(df['Ship_Date'], errors = 'coerce')
df1 = df.groupby('Industry')

axes = df1.boxplot(column='Gross_Margin',layout=(1,9), figsize=(20,10),
                   whis=[5,95], return_type='axes')
for ax in axes.values():
    ax.set_ylim(-2.5, 2.5)

plt.show()

关键是将子图作为轴对象返回并单独设置限制。

答案 1 :(得分:2)

一旦为均值和标准差建立了变量,请使用:

plt.ylim(ymin, ymax)

设置y轴。

答案 2 :(得分:0)

感谢@Padraig, 请注意,如果您使用plt作为不带子图的图形,则可以使用:

plt.ylim(ymin, ymax)

但是,如果您要调整一个子图的Y轴,则该方法有效(@AlexG)

ax.set_ylim(ymin, ymax)

例如,如果您的子图是ax2,并且您希望Y轴的范围是0.5到1.0,则代码将如下所示:

ax2.set_ylim(0.5, 1.0)