如何向带状图添加多个标记?

问题描述 投票:0回答:3

我想知道如何在同一个带状图中获得多个标记。

tips = sns.load_dataset("tips")

coldict={'Sun':'red','Thur':'blue','Sat':'yellow','Fri':'green'}
markdict={'Sun':'x','Thur':'o','Sat':'o','Fri':'o'}

tips['color']=tips.day.apply(lambda x: coldict[x])
tips['marker']=tips.day.apply(lambda x: markdict[x])

m=sns.stripplot('size','total_bill',hue='color',\
                marker='marker',data=tips, jitter=0.1, palette="Set1",\
                split=True,linewidth=2,edgecolor="gray")

这似乎不起作用,因为标记只接受单个值。

另外,我希望将相应的“太阳”值设置为透明的红色三角形。知道如何实现这一目标吗?

谢谢你。

编辑: 因此,更好的方法是声明 my_ax = plt.axes() 并将 my_ax 传递给每个条形图(ax=my_ax)。我相信这就是应该做的事情。

python seaborn stripplot
3个回答
7
投票

注意,这有点老套,但你开始吧:

import sns

tips = sns.load_dataset("tips")

plt.clf()
thu_fri_sat = tips[(tips['day']=='Thur') | (tips['day']=='Fri') | (tips['day']=='Sat')]
colors = ['blue','yellow','green','red']
m = sns.stripplot(x='size',y='total_bill',hue='day',
                  marker='o',data=thu_fri_sat, jitter=0.1, 
                  palette=sns.xkcd_palette(colors),
                  dodge=True,linewidth=2, edgecolor="#aaaaaa")

sun = tips[tips['day']=='Sun']
n = sns.stripplot(x='size',y='total_bill', color='red',hue='day',alpha=0.5,
                  palette='dark:red',
                  marker='^',data=sun, jitter=0.1, 
                  dodge=True,linewidth=0)
handles, labels = n.get_legend_handles_labels()
n.legend(handles[:4], labels[:4])
    plt.savefig('/path/to/yourfile.png')

enter image description here


3
投票

从0.12版本开始,您可以使用seaborn对象接口来实现这一点:

import seaborn.objects as so

tips = sns.load_dataset("tips")
coldict={'Sun':'red','Thur':'blue','Sat':'yellow','Fri':'green'}
markdict={'Sun':'v','Thur':'o','Sat':'o','Fri':'o'}

(
    so.Plot(tips, x="size", y="total_bill", color="day", marker="day")
    .add(
        so.Dot(pointsize=7, edgecolor="gray"),
        # so.Dodge(), # use this if you want to separate the markers with different colors
        so.Jitter(0.5)
    )
    .scale(
        color=so.Nominal(coldict),
        marker=so.Nominal(markdict)
    )
)

没有

Dodge
Stripplot without Dodge

Dodge
Stripplot with Dodge


-1
投票

LMplot 是你的朋友!但是,不可能添加多个:/ [或者至少我还没有弄清楚]

在此输入图片描述

© www.soinside.com 2019 - 2024. All rights reserved.