当我使用lineplot或stripplot时,效果很好。但是同时使用中位数会发生变化;我不明白为什么!谢谢您的帮助。
sns.lineplot(x='quality', y='alcohol', data=df, estimator=np.median, err_style=None)
sns.stripplot(x='quality', y='alcohol', data=df, jitter=True, color='red', alpha=0.2, edgecolor='none')
答案 0 :(得分:0)
这里发生的是,您的第一个图正在创建一个范围从0到n的x轴,并用从3到n的整数列表重新标记这些x刻度,然后在第二个图或带状图绘制在该x轴使用的是原始数字,因此此新图表的xtick 3从标记为xtick 6开始。
一种纠正此问题的方法是创建一个具有预定义范围的x轴,然后以该预定义比例绘制两个图表,请参见以下示例:
import seaborn as sns
import matplotlib.pyplot as plt
x = [3,4,5,6,7,8]
y = [10, 12, 15, 18, 19, 26]
#First axes creates the error in graphing
fig, ax = plt.subplots(1,2)
sns.lineplot(x=x,y=y, ax=ax[0])
sns.stripplot(x=x, y=y, ax=ax[0])
#Second axes shows correction
xplot = range(len(x))
sns.lineplot(x=xplot,y=y, ax=ax[1])
sns.stripplot(x, y=y, ax=ax[1])
输出: