【问题标题】:Seaborn Plotting Multiple Plots for GroupsSeaborn 为组绘制多个图
【发布时间】:2020-04-25 09:00:39
【问题描述】:

如何使用 Seaborn 为下面的每个组(每个 ID)绘制多个图?我想绘制两个地块,一个地块在另一个地块之下,每个地块有一条线 (ID)。

ID    Date           Cum Value  Daily Value
3306  2019-06-01      100.0     100.0
3306  2019-07-01      200.0     100.0
3306  2019-08-01      350.0     150.0
4408  2019-06-01      200.0     200.0
4408  2019-07-01      375.0     175.0
4408  2019-08-01      400.0     025.0

这只会将两条线绘制在一起,如果有 200 个唯一 ID,则可能看起来很混乱。

sns.lineplot(x="Date", y="Daily Value",
             hue="ID", data=df)

【问题讨论】:

  • 你想要 2 个 100 行的图而不是 200 行的单个图?
  • 我只想要两个图,每个唯一 ID 一个在另一个之上,无论是 2 还是 200。每个图一行。谢谢!
  • 那么也许只是为每个 ID 制作一个单独的数字。我认为尝试使用 200 个子图来调整大小会更麻烦:for idx, gp in df.groupby('ID'): fig, ax = plt.subplots(); gp.plot(x='Date', y='Daily Value', ax=ax, title=idx)

标签: python pandas seaborn


【解决方案1】:

你可以使用

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.DataFrame({'id': [3306, 3306, 3306, 4408, 4408, 4408],
                   'date': ['2019-06-01', '2019-07-01', '2019-08-01', '2019-06-01', '2019-07-01', '2019-08-01'],
                   'cum': [100, 200, 350, 200, 375, 400],
                   'daily': [100, 100, 150, 200, 175, 25]
})

g = sns.FacetGrid(df, col = 'id')
g.map(plt.plot, 'date', 'daily')

给了

但是如果你有 200 个 id 会发生什么?

【讨论】:

  • 感谢@SchwarzeHuhn,如何将这两个图表堆叠而不是并排放置?
猜你喜欢
  • 2021-11-03
  • 2019-04-09
  • 2017-11-17
  • 2020-08-23
  • 2021-02-20
  • 1970-01-01
  • 2021-04-06
  • 2021-02-26
  • 2018-05-13
相关资源
最近更新 更多