【问题标题】:Creating legend for graph with multiple lines representing a 'group'为具有代表“组”的多条线的图形创建图例
【发布时间】:2017-11-17 03:31:27
【问题描述】:

从 pandas 'g' 中的数据框中,我有以下数据:

index    Speaker          Date        ARI     Flesch    Kincaid  
0        Alan Greenspan   1996  15.234878  34.669383  14.533217   
1        Alan Greenspan   1997  16.235605  31.415163  15.335869    
11       Alan S. Blinder  2002  14.299481  41.847836  13.681203         
12       Alan S. Blinder  2003        NaN        NaN        NaN     
14       Alice M. Rivlin  1996  15.828971  33.394999  15.211662  

使用下面的代码,我已经能够生成以下图表:

s = data
s['Date'] =  pd.to_datetime(s['Date'], format='%Y-%m-%d %H:%M:%S')
s = s.set_index(['Date'])
grouped = s.groupby('Speaker').resample('AS').mean()
grouped = grouped.reset_index()
g = grouped.reset_index()
g["Date"] = g["Date"].dt.year
g.plot(x='Date', y='Flesch', colormap = cm.cubehelix, legend=True, 
title="Auto", figsize=(12,10))

我希望图表为每条线包含不同的颜色,并放置一个图例,说明哪个“扬声器”与每条线相关联。任何帮助将不胜感激!

【问题讨论】:

  • 我目前的想法是做一个数据透视表...

标签: python pandas matplotlib graph


【解决方案1】:

尝试通过扬声器groupby,然后按照here 的描述进行绘图

【讨论】:

  • 这为每个“演讲者”创建了一个单独的图表...我已经在代码的第 4 行中传递了一个 groupby 参数...主要问题是获得不同的颜色和包含演讲者的图例名字...谢谢
  • 是的,这为您的图表增加了一定程度的复杂性。我个人更喜欢使用 seaborn,如 here 所示,但我也很高兴看到内置的优雅 pandas 解决方案
  • Seaborn 是一个很棒的软件包。您不需要像处理 pandas plot 那样进行数据操作。
【解决方案2】:

让我们尝试这样的事情:

df.pivot_table(values='Flesch',index='Date',columns='Speaker').reset_index().plot(x='Date',colormap= cm.cubehelix)

(我刚刚添加了该标记以在您的测试数据中显示这些单点。)

【讨论】:

  • 是的,就是这样——谢谢!一个后续问题:如何移动图例的位置? (我也可以用谷歌搜索:p)再次感谢!
  • 谢谢,我还在努力,但这真的很有帮助:)
  • 现在知道了!谢谢!!
猜你喜欢
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多