设置调色板时,pointplot不显示线条

时间:2017-03-20 11:17:55

标签: python matplotlib seaborn

当我使用sns.pointplot()中的任何调色板时,无论是否设置join=True,或者选择任何线型,线都没有显示,这些点都有调色板颜色,但它们没有连接。应该是这样吗?或者我可以设置其他参数来连接点吗?这条线可以是一种颜色。

1 个答案:

答案 0 :(得分:1)

一个选项可能是绘制两个点图,一个使用调色板并显示错误栏和点,另一个显示连接线(没有调色板)。

import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
#make one plot for the line without points and errorbars
ax = sns.pointplot(x="day", y="tip", data=tips, markers="",
                   join=True, ci=None, color="k")
#make one plot for the points without the connecting line
ax = sns.pointplot(x="day", y="tip", data=tips, 
                   palette=sns.color_palette())

plt.show()

enter image description here

缺点显然是seaborn完全忽略zorder并在点的顶部绘制线条。因此,需要在外部使用zorder以获得某种吸引人的结果:

import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
#make one plot for the line without points and errorbars
ax = sns.pointplot(x="day", y="tip", data=tips, markers="",
                   join=True, ci=None, color="k")
#make one plot for the points without the connecting line
ax = sns.pointplot(x="day", y="tip", data=tips, 
                   palette=sns.color_palette())

ax.lines[0].set_zorder(2)
for l  in ax.lines[1:]:
    l.set_zorder(5)
for c  in ax.collections:
    c.set_zorder(3)

plt.show()

enter image description here