【问题标题】:Set y-axis scale for pandas Dataframe Boxplot(), 3 Deviations?为pandas Dataframe Boxplot()设置y轴比例,3个偏差?
【发布时间】:2020-06-09 20:55:35
【问题描述】:

我正在尝试每月制作一个箱线图区域,其中不同的箱线图按行业分组(并标记),然后让 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()
)

【问题讨论】:

  • 我喜欢你在pandas.core.groupby.DataFrameGroupBy 对象上调用绘图函数的方式,我不知道这是可能的。

标签: python pandas dataframe boxplot


【解决方案1】:

这里是您的代码的清理版本以及解决方案:

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

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

【讨论】:

    【解决方案2】:

    一旦确定了均值和标准差的变量,请使用:

    plt.ylim(ymin, ymax)

    设置y轴。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2019-06-28
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 2021-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-01
        相关资源
        最近更新 更多