【发布时间】:2022-05-06 23:37:12
【问题描述】:
我想在一个图中同时绘制箱线图和平均值。到目前为止,我的情节看起来像这样使用这些代码行:
sns.swarmplot(x="stimulus", y="data", data=spi_num.astype(np.float), edgecolor="black", linewidth=.9)
sns.boxplot(x="stimulus", y="data", data=spi_num.astype(np.float), saturation=1)
sns.pointplot(x="stimulus", y="data", data=spi_num.astype(np.float), linestyles='', scale=1, color='k', errwidth=1.5, capsize=0.2, markers='x')
sns.pointplot(x="stimulus", y="data", data=spi_num.astype(np.float), linestyles='--', scale=0.4, color='k', errwidth=0, capsize=0)
plt.ylabel("number of spikes")
plt.title("Median Number of Spikes");
我想将我的平均“x”标记向右移动一点,这样误差线就不会与箱线图中的胡须重叠。知道怎么做吗?一个额外的问题:我如何在这个情节中插入一个图例,优雅地说“x:平均值,o:数据值”?
构建我的数据框
trial_vec = np.tile(np.arange(16)+1, 10)
stimulus_vec = np.repeat([-2., -1.75, -1., -0.75, -0.5, 0.5, 1., 1.25, 1.75, 2.5 ], 16)
data_vec = np.random.randint(0, 16, size=160)
spi_num = pd.DataFrame({'trial': trial_vec, 'stimulus': stimulus_vec, 'data': data_vec}).astype('object')
【问题讨论】:
标签: python matplotlib legend seaborn boxplot