如何更改熊猫箱形图中胡须的线型?
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(),by
arguments 似乎有问题。在这里,将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 轴