【问题标题】:I need to plot grouped data using matplotlib or seaborn我需要使用 matplotlib 或 seaborn 绘制分组数据
【发布时间】:2021-01-29 22:21:05
【问题描述】:

我正在尝试绘制国家/地区部门及其销售情况。所以我在不同的列中有国家、部门和他们的销售数字。我需要创建条形图,所以它应该在 x 轴和销售 y 轴上看起来像 country1 及其部门,然后是 country2 等等。

我尝试了 seaborn 的 catplot,但它给了我每个国家/地区的差异图,使用 plotly 的栏它只是将所有部门绘制在一起。我需要根据国家/地区对其进行分组。

感谢任何输入。谢谢

【问题讨论】:

  • 你能提供你的数据样本吗?
  • 如果你想让人们与你分享他们的一点点知识,你必须分享你的一小段代码。
  • 我正在分享这个例子: Main_Sector Country Count 0 Others USA 2923 1 Cleantech / Semiconductors USA 2297 2 Social, Finance, Analytics, Advertising USA 1912 0 Others GBR 143 1 Cleantech / Semiconductors GBR 127 2 Social,金融、分析、广告 GBR 98 0 其他 IND 109 1 新闻、搜索和消息 IND 52 2 娱乐 IND 33

标签: python pandas matplotlib plot seaborn


【解决方案1】:

您可以使用'Country' 作为x'Department' 作为hue 创建一个barplot()

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

df = pd.DataFrame({'Country': np.repeat(['Albania', 'Botswana', 'Chili'], 4),
                   'Department': np.tile(['Department1', 'Department2', 'Department3', 'Department4'], 3),
                   'Sales': np.random.randint(10000, 100000, 12)})
sns.barplot(data=df, x='Country', y='Sales', hue='Department')
plt.show()

处理空条的一种方法是创建堆叠条:

df.pivot(index='Country', columns='Department').plot(kind='bar', stacked=True, rot=0)

【讨论】:

  • 这几乎就是我想要的。但是,假设在某些国家/地区缺少一些部门。例如:美国财务 100 美国销售 200 美国人力资源 300 英国财务 250 英国运输 80 英国制造 130 所以,现在它在英国创造了销售和人力资源的空白。有办法解决吗
  • 在这种情况下,该部门的栏将为空。
  • 我可以去掉那些空白条吗?
  • 我用堆积条更新了答案,空条没有问题。否则,How to add group labels for bar charts in matplotlib? 可能值得一看。总的来说,我认为没有明确的解决方案。
  • 感谢 JohanC,您分享的链接非常好。我正试图从中得到解决方案。非常感谢
猜你喜欢
  • 2018-11-23
  • 2019-10-21
  • 2019-07-13
  • 2018-08-23
  • 1970-01-01
  • 2020-02-21
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
相关资源
最近更新 更多