【问题标题】:How can I show multi lines in seaborn graph?如何在 seaborn 图中显示多条线?
【发布时间】:2020-04-14 20:17:30
【问题描述】:

我想在 seaborn 点图中画三条线。三行基于以Total Confirmed, Total Death, Total Recovered命名的标签

这是我的数据集

      Date     Total Confirmed  Total Death Total Recovered
0   1/22/20         555            17           28
1   1/23/20         654            18           30
2   1/24/20         941            26           36
3   1/25/20         1434           42           39
4   1/26/20         2118           56           52

我写的代码只显示了一个值,没有显示其他两个值。如何修复我的代码以在日志图中显示所有三行,因为它们的结果彼此不同。

plt.figure(figsize=(18,7))
ax = sns.pointplot(data = df, x='Date', y='Total Confirmed', color="b")
plt.title('General Trend', fontsize=22, y=1.015)
plt.xlabel('month-day-year', labelpad=16)
plt.ylabel('# of people', labelpad=16)
ax.figure.legend()
plt.xticks(rotation=90);
plt.savefig('images/image1.png')

【问题讨论】:

标签: python pandas plot seaborn


【解决方案1】:

分别创建三个pointplots,并将它们添加到同一个图中。您可以在 ax.set 中将 y 刻度设置为对数设置 yscale="log"

fig, ax = plt.subplots(figsize=(18,7))
c=sns.pointplot(data = df, x='Date', y='TotalConfirmed', color="b", 
                label='Total Confirmed')
d=sns.pointplot(data = df, x='Date', y='TotalDeath', color="r", 
                label='Total Death')
r=sns.pointplot(data = df, x='Date', y='TotalRecovered', color="g", 
                label='Total Recovered')
ax.set_title('GeneralTrend', fontsize=22, y=1.015)
ax.set_xlabel('month-day-year', labelpad=16)
ax.set_ylabel('# of people', labelpad=16)
ax.set(yscale="log")
t=plt.xticks(rotation=45)

【讨论】:

    【解决方案2】:

    你需要在df上使用melt:

    df = df.melt("Date", ["Total Confirmed","Total Death","Total Recovered"])
    ax = sns.pointplot(data = df, x='Date', y='value', hue="variable")
    

    【讨论】:

    【解决方案3】:

    您可以在同一图中制作其他图,如下所示:

    plt.figure(figsize=(18,7))
    
    sns.pointplot(data = df, x='Date', y='Total Confirmed', color="b")
    sns.pointplot(data = df, x='Date', y='Total Death', color="g")
    sns.pointplot(data = df, x='Date', y='Total Recovered', color="r")
    

    【讨论】:

    【解决方案4】:

    提到的另一种选择是使用pandas.DataFrame.plot() 方法:

    fig, ax = plt.subplots(figsize=(18,7))
    df.plot(x='Date')
    

    如果您想指定自定义颜色,也可以在字典中提供颜色:

    fig, ax = plt.subplots(figsize=(18,7))
    df.plot(x='Date', colors=['r', 'g', 'b'])
    

    【讨论】:

    猜你喜欢
    • 2020-12-23
    • 2015-09-08
    • 2021-02-17
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2020-07-02
    • 2015-11-07
    相关资源
    最近更新 更多