我正在尝试用 Python 绘制图表,并且是 Python 新手。我已经绘制了图表,但均值不在正确的位置。谁能指出代码中的错误:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
data = pd.read_csv("PB1_MG_5.8.csv")
ax=sns.stripplot(data = data, x='Target', y='Value', edgecolor='black',
jitter=True, dodge=True, linewidth=1, hue="Condition", hue_order=['NoNS2','NS2'], alpha = 0.3)
sns.despine()
ax.legend( ['-NS2','+NS2'], bbox_to_anchor=(1.05, 0.7), loc=2, borderaxespad=0.,frameon=False, title='PB1')
plt.ylabel('log$2$(1600/length)')
a =plt.xticks(rotation=45, ha='right')
ax.set_yscale('log', base=2)
ax.set_ylim(1,8)
for position, Target in enumerate(['200nt', '400nt', '800nt']):
y = data[data.Condition == 'NoNS2'].Value.mean()
plt.plot([position-0.325, position-0.075], [y, y], lw=4, c='k', zorder=9)
y = data[data.Condition == 'NS2'].Value.mean()
plt.plot([position+0.075, position+0.325], [y, y], lw=4, c='k', zorder=9)
我想要每个组的方法
问题是您正在计算 each 条件的 all 值的平均值,并绘制 all 目标的平均值。相反,您应该计算并绘制每个条件下每个目标的平均值:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
data = pd.read_csv("PB!_MG_5.8.csv")
ax = sns.stripplot(data = data, x='Target', y='Value', edgecolor='black', jitter=True, dodge=True, linewidth=1, hue='Condition', hue_order=['NoNS2', 'NS2'], alpha = 0.3)
sns.despine()
ax.legend( ['-NS2', '+NS2'], bbox_to_anchor=(1.05, 0.7), loc=2, borderaxespad=0.,frameon=False, title='PB1')
plt.ylabel('log$2$(1600/lenght)')
a =plt.xticks(rotation-45, ha='right')
ax.set_yscale('log', base=2)
ax.set_ylim(1,8)
for position, target in enumerate(['200nt', '400nt', '800nt']):
y = data[(data.Condition == 'NoNS2') & (data.Target == target)].Value.mean()
plt.plot([position-0.325, position-0.075], [y, y], lw=4, c='k', zorder=9)
y = data[(data.Condition == 'NS2') & (data.Target == target)].Value.mean()
plt.plot([position+0.075, position+0.325], [y, y], lw=4, c='k', zorder=9)