pandas 海运/ Matplotlib:取决于一列的子图

m4pnthwp  于 2023-01-01  发布在  其他
关注(0)|答案(1)|浏览(112)

我有一个Dataframe,基于它的数据,我为它绘制线图。目前的代码看起来很简单:

ax = sns.lineplot(x='datapoints', y='mean', hue='index', data=df)
sns.move_legend(ax, "upper left", bbox_to_anchor=(1, 1))

现在,实际上有一个列,称为“klinger”,它有8个不同的值,我想得到一个由8个子情节(4X2)组成的情节,所有共享只有一个图例。
这是件容易的事吗?
目前,我通过过滤生成子dfs,只是画了8个图,然后用图形工具将它们切割在一起,但这不是解决办法

bq9c1y66

bq9c1y661#

你可以使用sns.relplot和kind ='line'来得到你想要的东西。使用col ='klinger'来绘制你所需要的子图,col_wrap=4将有助于获得4x2的形状,col_order=klinger_categories将选择你想要绘制的类别。

import numpy as np
import pandas as pd
import seaborn as sns
number = 100
klinger_categories = ['a','b','c','d','e','f','g','h']
data = {'datapoints': np.arange(number),
        'mean': np.random.normal(0,1,size=number),
        'index': np.random.choice(np.arange(2),size=number),
        'klinger': np.random.choice(klinger_categories,size=number),
        }
df = pd.DataFrame(data)
sns.relplot(
        data=df, x='datapoints', y='mean', hue='index', kind='line',
        col='klinger', col_wrap=4, col_order=klinger_categories
        )

相关问题