为pandas数据框的箱线图设置y轴刻度,3个标准差?

5
我试图制作一个单独的箱线图,每个月一个区域,不同的箱线图按行业分组并加以标记,然后使用我指定的比例尺来设置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()
)

2
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Alex
3个回答

14

这是您的代码经过清理并解决后的版本:

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()

关键是将子图作为轴对象返回,并逐个设置限制。


5

一旦您已经建立了均值和标准差的变量,使用如下代码设置y轴范围:

plt.ylim(ymin, ymax)

以设定y轴。


-1

感谢@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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接