【问题标题】:Horizontal box plots in matplotlib/Pandasmatplotlib/Pandas 中的水平箱线图
【发布时间】:2021-03-03 19:02:26
【问题描述】:

条形图:

matplotlib 提供函数barbarh 来制作垂直水平条形图。

箱线图:

matplotlib 还提供函数boxplot 来制作垂直箱线图。

Pandas垂直 箱形图提供its own function

但是在 matplotlib 或 Pandas 中是否有任何方法可以获得 水平 箱线图?

【问题讨论】:

    标签: python matplotlib pandas


    【解决方案1】:
    vert=False stands # for "no vertical"
    

    使用 by='categorical_feature name' 为每个级别制作框 plt.tight_layout() # 杀死任何重叠的图(不总是) 当您掌握 Matplotlib 和 Pandas 时,它们真的很容易,并且您可以使用它们进行强大的绘图。

    【讨论】:

      【解决方案2】:

      matplotlib 的boxplot(..., vert=False) 制作水平箱线图。 关键字参数vert=False也可以传给DataFrame.boxplot

      import matplotlib.pyplot as plt
      import pandas as pd
      x = [[1.2, 2.3, 3.0, 4.5],
           [1.1, 2.2, 2.9, 5.0]]
      df = pd.DataFrame(x, index=['Age of pregnant women', 'Age of pregnant men'])
      
      df.T.boxplot(vert=False)
      plt.subplots_adjust(left=0.25)
      plt.show()
      

      我从评论(下面)中看到,制作水平箱形图的动机是标签相当长。在这种情况下,另一种选择可能是旋转 xticklabels:

      import matplotlib.pyplot as plt
      import pandas as pd
      x = [[1.2, 2.3, 3.0, 4.5],
           [1.1, 2.2, 2.9, 5.0]]
      df = pd.DataFrame(x, index=['Age of pregnant women', 'Age of pregnant men'])
      
      df.T.boxplot()
      plt.subplots_adjust(bottom=0.25)
      plt.xticks(rotation=25)
      plt.show()
      

      【讨论】:

      • 谢谢!奇怪的是,当我这样做时,我的 xticks 标签不适合图中(这正是我想使用水平箱线图的原因)。最长的 xtick 读取类似"Age of pregnant women" 的内容。有什么想法吗?
      • @AmelioVazquez-Reina 在绘图前尝试添加plt.tight_layout()
      • @unutbu df 和 plt 有什么关系... plt 是如何知道数据帧的
      • @AndreaMoro:Pandas 建立在 NumPyMatplotlib 之上。 df 是 Pandas 数据框。这是 boxplot 方法调用 matplotlib 函数来构建箱线图。在后台,df.boxplot 调用 plt.boxplot
      • 感谢您的澄清
      猜你喜欢
      • 2019-03-19
      • 2019-01-31
      • 2021-09-23
      • 2018-08-13
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 2018-07-22
      相关资源
      最近更新 更多