如何更改熊猫箱形图中胡须的线型?

Posted

技术标签:

【中文标题】如何更改熊猫箱形图中胡须的线型?【英文标题】: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')) 【参考方案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))

【讨论】:

以上是关于如何更改熊猫箱形图中胡须的线型?的主要内容,如果未能解决你的问题,请参考以下文章

将熊猫 groupby 中的组绘制在一个图中时如何更改 x 轴

更改熊猫箱线图子图中各个框的颜色

如何在熊猫 df 图中添加水平线? [复制]

如何避免熊猫直方图子图中的绘图标题和轴标题之间的重叠? [复制]

熊猫条形图中的刻度标签重叠

熊猫条形图中的刻度标签重叠