gpt4 book ai didi

python - 箱线图 : custom width in seaborn

转载 作者:行者123 更新时间:2023-12-04 17:25:13 29 4
gpt4 key购买 nike

我试图在 seaborn 中绘制箱线图,其宽度取决于 x 轴值的对数。我正在创建宽度列表并将其传递给 seaborn.boxplot 的 widths=widths 参数。
但是,我明白了

raise ValueError(datashape_message.format("widths"))
ValueError: List of boxplot statistics and `widths` values must have same the length
当我调试和检查时,箱线图统计中只有一个字典,而我有 8 个箱线图。
无法准确找出问题所在。
Here is the image of the Boxplot
我正在使用 Pandas 数据框和 seaborn 进行绘图。

最佳答案

Seaborn 的 boxplot 似乎不理解 widths=范围。
这是一种根据 x 创建箱线图的方法通过 matplotlib 的值 boxplot确实接受 width=范围。下面的代码假设数据组织在 Pandas 的数据框中。

from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns

df = pd.DataFrame({'x': np.random.choice([1, 3, 5, 8, 10, 30, 50, 100], 500),
'y': np.random.normal(750, 20, 500)})
xvals = np.unique(df.x)
positions = range(len(xvals))
plt.boxplot([df[df.x == xi].y for xi in xvals],
positions=positions, showfliers=False,
boxprops={'facecolor': 'none'}, medianprops={'color': 'black'}, patch_artist=True,
widths=[0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
means = [np.mean(df[df.x == xi].y) for xi in xvals]
plt.plot(positions, means, '--k*', lw=2)
# plt.xticks(positions, xvals) # not needed anymore, as the xticks are set by the swarmplot
sns.swarmplot('x', 'y', data=df)
plt.show()
example plot

关于python - 箱线图 : custom width in seaborn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63792528/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com