我试图每月制作一个箱线图表区域,不同的箱图由行业分组(并标记),然后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()
)
答案 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)