Can the swarmplot of seaborn adjust the marker shape of points?
我使用 seaborn 中的 swarmplot 函数来绘制类别散点图。但我在每个类别中有两种类型的点。所以我希望可以将不同类型的点设置为不同的标记。
seaborn的swarmplot可以调整点的标记形状吗?或者我可以使用其他工具
我只发现swarmplot的文档中可以调整参数标记的大小。我尝试使用色调。但是当我使用色调时,所有类别都代表相同的颜色。那不是我的主意。
3.
1 2 3 4 5 6 7 8 9 10
| # plot the manhattan map
snsplt =sns.swarmplot(x=scale,y=distance,marker='o')
plt.tick_params(labelsize=12)
# plot the significant line
bin = np.arange(-0.2,5.2,0.2)
y = np.full((len(bin),),distance[p_minsignIndex])
snsplt = sns.lineplot(x=bin,y=y)
plt.show() |
图片是我的草稿。
我希望线条上方的圆圈是实心圆圈,而线条下方的圆圈是空心圆圈。
- 在群图的每个圆圈内放一个 x 或其他东西怎么样?
-
你能检查你上面的代码吗.. sns.swamplot 调用中似乎缺少一些东西..
-
群图的一个众所周知的问题是,点在图中出现的位置以及图的一般结构取决于圆圈的大小(因为这决定了它们的打包方式)。这个问题对于非圆形形状来说要困难得多,而且基本上没有人因此使用非圆形形状。很容易找到所有圆圈的位置,然后替换形状,但看起来很奇怪。所以你需要在这里指定你想要的。也许用手画一幅画,让我们相信你真的想要你所要求的。
-
谢谢你的建议。我已经更新了代码和我的草稿图像。
鉴于您展示的情节,您似乎有两个类别同时发生:
1) 沿轴的位置表示一个类别——我称之为cat1;和,
2) 每个类别中的变化,这就是您希望通过标记显示的内容——我称之为 cat2.
到目前为止,将这两个类别一起显示的最简单方法是使用 seaborn 提供的工具来执行此操作。具体来说,在您的绘图中,您以两种不同的方式识别 cat1:首先通过其沿 x 轴的位置,其次通过颜色。所以想法是使用 cat1 的位置和 cat2 的颜色。此外,您在下面的评论中提到您想使用标记来显示统计显着性,所以我选择了一个做得很好的调色板。这是从 seaborn 文档中获取的示例,但经过修改以显示显着性阈值(根据您的要求):
1 2 3 4 5
| import seaborn as sns
import numpy as np
tips['bigness'] = np.where(tips['total_bill']>15, 'big', 'small')
sns.swarmplot(x="day", y="total_bill", hue="bigness", data=tips, palette="Paired", hue_order=["small","big"]) |
- @StevenHill:这是海生群体图的简单内置方法。这是一个很好的方法。如果,在查看它时,你有一个令人信服的理由来绘制圆形轮廓,我很想听听它。对我来说似乎更难阅读——只是每个圆圈中心的一个小点不同?看起来颜色更清晰,即使是灰度。更改形状或圆形轮廓并不是特别困难,但要找到枚举并更改圆形需要一些努力。
-
感谢您的聆听和您的回答。线上方的点具有统计显着性。我试图通过要点是否可靠来强调要点的重要性。此外,知道这些技巧对我来说很有趣。但你是对的,这种显示方式的效果可能不会更好。
-
@StevenHill:我已经改变了情节的颜色以反映"重要性",方法是使用浅色去强调,并利用 seaborn 有一个名为"配对"的调色板这一事实。 (虽然在 seaborn 中比 matplotlib 更难,但可以直接编辑每个符号,但如果可以避免的话,它会更容易更好——用于重复使用和共享等。另外,我觉得这看起来不错。)
-
@StevenHill:为了满足您对如何编辑标记的好奇心,这里有一个来自 SO 的示例。但请注意,除非您已经看过最初的群体图,否则确定位置的先验并不明显(例如,正方形重叠,三角形有很多空间等),总体而言,这些很难读。另外,如果您是 seaborn/matplotlib 的新手,同样值得注意的是,这种类型的事情(编辑个别艺术家)在 seaborn 中比 matplotlib 更难。