Python Seaborn FaceGrid动态mean Axlin

2024-06-26 14:00:52 发布

您现在位置:Python中文网/ 问答频道 /正文

每个方面都有自己的意义。如何为每个不同的方面绘制相应的mymean值?mymean是3个平均值的列表。在

from random import randint
import pandas as pd
names = ["Jack", "Ernest", "Wilde"]
a = pd.DataFrame({"Value": [randint(0, 100) for i in range(len(names)*5)],
                  "Year": [y for i in range(len(names)) for y in range(2014,2019)], 
                  "Name": [name for name in names for i in range(5)]})

mymean = a.groupby(["Name"])["Value"].mean()

sns.set(style="white", context="talk")
grid = sns.FacetGrid(a, col="Name", hue="Name", col_wrap=3, size=3, sharey=False)
grid.map(plt.axhline, y=60, ls=":", c=".5")
grid.map(plt.plot, "Year", "Value", marker="o", ms=5)
grid.fig.tight_layout(w_pad=1)

enter image description here


Tags: nameinimportforlennamesvaluerange
1条回答
网友
1楼 · 发布于 2024-06-26 14:00:52

您可以创建一个自定义映射函数,该函数将从每个方面获取数据,计算平均值,并绘制结果值

def plot_mean(data,**kwargs):
    m = data.mean()
    plt.axhline(m, **kwargs)

names = ["Jack", "Ernest", "Wilde"]
a = pd.DataFrame({"Value": [np.random.randint(0, 100) for i in range(len(names)*5)],
                  "Year": [y for i in range(len(names)) for y in range(2014,2019)], 
                  "Name": [name for name in names for i in range(5)]})
mymean = a.groupby(["Name"])["Value"].mean()
sns.set(style="white", context="talk")
grid = sns.FacetGrid(a, col="Name", hue="Name", col_wrap=3, size=3, sharey=False)

# To get the data passed to our custom function, 
# we need to add "Value" as a second argument to FacetGrid.map()
grid.map(plot_mean, 'Value', ls=":", c=".5")

grid.map(plt.plot, "Year", "Value", marker="o", ms=5)
grid.fig.tight_layout(w_pad=1)

enter image description here

相关问题 更多 >