【问题标题】:How to plot data from multiple dataframes with seaborn relplot如何使用 seaborn relplot 从多个数据帧中绘制数据
【发布时间】:2021-01-16 13:39:52
【问题描述】:

我想在同一组轴上绘制两条线。似乎sns.relplot 正在创建一个多面图,我不知道如何指定我希望第二行与第一行位于同一方面。

这是一个 MWE

import numpy as np
import pandas as pd
import seaborn as sns

x = np.random.uniform(low = 1, high = 10, size = 20)

df1 = pd.DataFrame({'x': x, 'y1': 2 * x, 'type': 'a'})
df2 = pd.DataFrame({'x': x, 'y2': 3 * x, 'type': 'b'})

sns.relplot(data = df1, x = 'x', y = 'y1', kind = 'line', hue = 'type', palette = ['red'])
sns.relplot(data = df2, x = 'x', y = 'y2', kind = 'line', hue = 'type', palette = ['blue'])

如何在同一情节上获得红线和蓝线?地图的不同排列我没有运气。

【问题讨论】:

    标签: python pandas seaborn


    【解决方案1】:
    • seaborn.relplotFacetGrid,应将数据框组合起来以将它们绘制在一起
      • 用于在FacetGrid 上绘制关系图的图形级界面。
        • 此函数提供对几个不同轴级函数的访问,这些函数显示两个变量之间的关系以及子集的语义映射。 kind 参数选择要使用的底层轴级函数:
          • scatterplot()(使用 kind="scatter";默认)
          • lineplot() (with kind="line")
    • python 3.8.12pandas 1.3.4matplotlib 3.4.3seaborn 0.11.2中测试
    import pandas as pd
    import numpy as np
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    x = np.random.uniform(low = 1, high = 10, size = 20)
    
    df1 = pd.DataFrame({'x': x, 'y1': 2 * x, 'type': 'a'})
    df2 = pd.DataFrame({'x': x, 'y2': 3 * x, 'type': 'b'}).rename(columns={'y2': 'y1'})
    
    df = pd.concat([df1, df2]).reset_index(drop=True)
    
    # plot df
    sns.relplot(data=df, x = 'x', y = 'y1', kind = 'line', hue = 'type', palette = ['red', 'blue'])
    

    替代方案

    x = np.random.uniform(low = 1, high = 10, size = 20)
    
    df1 = pd.DataFrame({'x': x, 'y1': 2 * x, 'type': 'a'})
    df2 = pd.DataFrame({'x': x, 'y2': 3 * x, 'type': 'b'})
    
    fig, ax = plt.subplots(figsize=(5, 5))
    
    sns.lineplot(data=df1, x='x', y='y1', label='a', ax=ax)
    sns.lineplot(data=df2, x='x', y='y2', label='b', ax=ax)
    
    • 直接绘制数据帧,无需 seaborn
    ax = df1.plot(x='x', figsize=(5, 5))
    df2.plot(x='x', ax=ax)
    

    【讨论】:

    • @zazizoma 我真的只能根据样本数据回答一个问题。要使用relplot,所有数据必须在同一个数据框中。
    • 线图解决方案可以满足我的需要。
    猜你喜欢
    • 1970-01-01
    • 2018-08-23
    • 2022-09-24
    • 2013-02-07
    • 2018-07-05
    • 2017-08-10
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多