如何解决Boxplot:seaborn中的自定义宽度
我正在尝试绘制seaborn的箱形图,其宽度取决于x轴值的对数。我正在创建宽度列表,并将其传递给seaborn.boxplot的widths = widths参数。
但是,我明白了
UPDATE table1 set col1='some value' from table1 t1 where not exists (select 1 from table2 t2 where t1.colx=t2.colx)
当我调试并检查时,箱线图统计中只有一个字典,而我有8个箱线图。 无法确切找出问题所在。
我正在使用熊猫数据框,并用seaborn进行绘图。
解决方法
Seaborn的箱线图似乎不了解widths=
参数。
这是一种通过matplotlib的x
(它接受boxplot
参数)为每个width=
值创建箱线图的方法。下面的代码假定数据是在熊猫的数据框中组织的。
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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。