我在this article中看到过这个奇妙的箱线图(图2)。
的数据
如您所见,这是一个箱形图,上面叠加了黑点的散点:x索引黑点(以随机顺序),y是感兴趣的变量。我想用Matplotlib做类似的事情,但我不知道从哪里开始。到目前为止,我在网上找到的箱线图并不那么酷,看起来像这样:
的
matplotlib文档:http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.boxplot
给箱线图着色的方法:https://github.com/jbmouret/matplotlib_for_papers#colored-boxes
4条答案
按热度按时间k4emjkb11#
您需要的是一种向x轴添加抖动的方法。
下面是here的例子:
字符串
x1c 0d1x的数据
引用链接:
向箱线图添加附加信息的一种方法是覆盖实际数据;这通常最适合于小或中等大小的数据系列。当数据密集时,上面使用的几个技巧有助于可视化:
1.降低alpha级别以使点部分透明
1.沿着x轴添加随机“抖动”以避免过冲
代码看起来像这样:
型
v09wglhw2#
扩展Kyrubas的解决方案,并仅使用matplotlib进行绘图部分(有时我很难用matplotlib格式化pandas图)。
字符串
的数据
wd2eg0qa3#
**再看一下原来的问题(我自己有更多的经验),我认为
sns.swarmplot
比sns.stripplot
更准确。作为一个更简单、可能更新的选项,您可以使用
seaborn
的swarmplot
选项。字符串
的数据
inn6fuwd4#
通过Kyrubas和hwang扩展solutions,你也可以定义一个函数
scattered_boxplot
(并将其作为一个方法添加到plt.Axes
),这样你就可以总是使用scattered_boxplot
而不是boxplot
:字符串
函数
scattered_boxplot
只能使用matplotlib
定义如下:型
并且可以作为一种方法添加到plt。轴通过
型
仍然可以访问箱形图的所有选项,并且另外可以选择用于水平抖动的散射分布(例如,
showfliers="unif"
),并且可以选择是否也应该显示晶须外部的飞行物(例如,hide_points_within_whiskers=False
)。这个解决方案已经很好用了。另一种方法是直接更改
matplotlib
的源代码,主要是行:https://github.com/matplotlib/matplotlib/blob/9765379ce6e7343070e815afc0988874041b98e2/lib/matplotlib/axes/_axes.py#L4006