如何在matplotlib中绘制数据点的平均值

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

我正在尝试用 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)

在此输入图片描述

我想要每个组的方法

python matplotlib graph
1个回答
0
投票

问题是您正在计算 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)
    
© www.soinside.com 2019 - 2024. All rights reserved.