python-3.x 取决于一列的子图

okxuctiv  于 2023-10-21  发布在  Python
关注(0)|答案(1)|浏览(137)

我有一个数据框架,根据它的数据,我为它绘制线图。代码目前看起来就这么简单:

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,只画八个图,然后用图形工具将它们切割在一起,但这不是解决方案

myss37ts

myss37ts1#

你可以通过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
        )

相关问题