【问题标题】:Pandas plot on 3 variablesPandas 绘制 3 个变量
【发布时间】:2016-04-30 11:59:54
【问题描述】:

有人可以帮我定义在 pandas 中可视化 3 列的最佳方式吗?我尝试使用堆积条形图并在 SO 上搜索其他解决方案,但没有任何效果。任何帮助表示赞赏。这是一个虚拟的 pandas 数据框:

Name    hour    var
Nem      0      2
Kiz      4      1
Hue      5      2
Kiz      0      3
Nem      7      7

【问题讨论】:

  • 您能否详细说明为什么堆积条形图不起作用?
  • 它可以工作,但该图已完全压缩,因为我在数据框中有大约 10000 行。如果可能的话,我想在 x 轴上有一个带有 Name 变量的条形图,颜色由 hour 定义,条形的每个彩色部分的高度由变量 var 定义。

标签: python pandas plot stacked-chart


【解决方案1】:

更新:这是你想要的吗?

(df.pivot_table(index='Name', columns='hour', values='var',
                aggfunc='sum', fill_value=0)
   .plot.bar(stacked=True)
)

解释:

In [55]: (df.pivot_table(index='Name', columns='hour', values='var',
   ....:                 aggfunc='sum', fill_value=0)
   ....: )
Out[55]:
hour  0  3  4  5  7
Name
Hue   0  6  0  2  0
Kiz   3  0  1  0  0
Nem   2  5  0  0  7

旧答案:

您可以为此使用seaborn 模块:

import seaborn as sns

sns.barplot(x='Name', y='var', hue='hour', data=df, saturation=0.8)

数据:

In [20]: df
Out[20]:
  Name  hour  var
0  Nem     0    2
1  Nem     3    5
2  Kiz     4    1
3  Hue     5    2
4  Kiz     0    3
5  Nem     7    7
6  Hue     3    6

【讨论】:

  • 非常感谢您的回答。我想知道,如果没有seaborn,是否可以做到这一点,并且可以按照我的预期使用每个名称和不同颜色的一个栏来完成吗?例如,仅仅看这个图我就不确定hour 7是属于Kiz还是Nem
  • 新答案应该适合!非常感谢!
猜你喜欢
  • 2023-04-01
  • 2015-03-18
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 2023-01-08
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
相关资源
最近更新 更多