【问题标题】:How to change the linestyle of whiskers in pandas boxplots?如何更改熊猫箱形图中胡须的线型?
【发布时间】:2018-02-23 20:19:31
【问题描述】:

有没有办法将熊猫箱形图中胡须的线条样式更改为“-”?默认似乎是'--'。

我试过了:

color = dict(boxes='black', whiskers='black', medians='red', caps='black')
styles=dict(whiskers='-')
bp = df.plot.box(color=color, style=styles)

然而,虽然颜色变成了我想要的方式,但样式输入似乎根本不会影响情节。

Here is an example. I always get dashed lines for my whiskers, but would like solid lines.

我也试过

boxprops = dict(linewidth=1.0, color='black')
whiskerprops = dict(linestyle='-',linewidth=1.0, color='black')
plt.figure()
df.boxplot(boxprops=boxprops, whiskerprops=whiskerprops)

这里,df.boxplot 根本不接受输入。

这与 Pandas boxplot: set color and properties for box, median, mean

【问题讨论】:

  • 默认为'-'。你的代码对我有用。你到底想要什么样的风格?
  • 所以你的胡须没有虚线?!
  • 没有。使用 linestyle ='--' 时出现虚线
  • 重新启动你的笔记本或任何你正在编程的东西。
  • 仅在笔记本顶部运行此代码,让我知道你得到了什么。 import seaborn as sns tips = sns.load_dataset('tips') tips.boxplot('tip', whiskerprops = dict(linestyle='-',linewidth=4.0, color='black'))

标签: python pandas matplotlib boxplot linestyle


【解决方案1】:

我这里没有 pandas,但它使用 matplotlib。 pyplot.boxplot 返回

将箱线图的每个组件映射到创建的 matplotlib.lines.Line2D 实例列表的字典。

一组线用于胡须。您可以通过字典访问每个胡须来设置linestyle property

from pprint import pprint
import matplotlib.pyplot as plt

data = [[1, 2, 3, 4, 5], [2, 3, 4], [1, 1.2, 1.4, 1.8]]
a = plt.boxplot(data)
pprint(a)
for whisker in a['whiskers']:
    whisker.set_linestyle('-.')
    print(whisker.get_linestyle())
plt.show()
plt.close()

line_styles_reference 示例中显示了可用的线型。

【讨论】:

  • 谢谢。有趣的是,更改“plt.boxplot()”的样式并没有带来任何问题。但是使用 pandas, df.boxplot() 没有采用 by 参数。我可能会按照你的方式试一试,然后告诉你进展如何!
【解决方案2】:

Ted Petrou 的评论有帮助:

将whiskerprops = dict()直接放到df.plot.box这一行:

color = dict(boxes='black', whiskers='black', medians='red', caps='black')
bp = df.plot.box(color=color,whiskerprops = dict(linestyle='-',linewidth=1.0
, color='black'))

至于 df.boxplot(),byarguments 似乎有问题。在这里,将whiskerprops 和boxprops 直接包含在参数中也有帮助。但是我仍然无法改变盒子的颜色!它仍然是默认的蓝色。以下代码产生实线黑色胡须,但方框是蓝色的。框的线宽可以更改!

plt.figure()
df.boxplot(boxprops= dict(linewidth=1.0, color='black')
, whiskerprops=dict(linestyle='-',linewidth=1.0, color='black'))

如果有人可以帮助更改 df.boxplot() 中的框颜色,请发表评论。从我得到的 pandas 文档中,人们还是应该使用 df.plot.box 。

【讨论】:

    【解决方案3】:
    import numpy as np
    import pandas as pd
    
    mu, sigma = 0, 1 
    s = np.random.normal(mu, sigma, 1000)
    
    df = pd.DataFrame(s)
    
    bPlot = df.boxplot(whiskerprops = dict(linestyle='--'
                               , linewidth=2))
    

    【讨论】:

      猜你喜欢
      • 2017-01-10
      • 1970-01-01
      • 2020-03-13
      • 2019-09-14
      • 2014-03-26
      • 2017-02-28
      • 1970-01-01
      • 2018-03-02
      • 2018-11-30
      相关资源
      最近更新 更多