【发布时间】:2019-05-30 20:37:46
【问题描述】:
我想创建一个 matplotlib 条形图,它具有堆叠图的外观,而不是从多索引 pandas 数据帧中添加。
以下代码给出了基本行为
%matplotlib notebook
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import io
data = io.StringIO('''Fruit,Color,Price
Apple,Red,1.5
Apple,Green,1.0
Pear,Red,2.5
Pear,Green,2.3
Lime,Green,0.5
Lime, Red, 3.0
''')
df_unindexed = pd.read_csv(data)
df_unindexed
df = df_unindexed.set_index(['Fruit', 'Color'])
df.unstack().plot(kind='bar')
绘图命令df.unstack().plot(kind='bar') 显示所有苹果价格并排排列。如果您选择选项df.unstack().plot(kind='bar',stacked=True) - 它会将红色和绿色的价格加在一起并将它们堆叠起来。
我想要一个介于两者之间的图 - 它将每个组显示为一个条形图,但会覆盖这些值,以便您可以看到所有值。下图(在 powerpoint 中完成)显示了我正在寻找的行为 -> 我想要右侧的图像。
不计算所有值,然后使用堆叠选项,这可能吗?
【问题讨论】:
-
在同一轴上分别绘制分组数据
标签: python pandas matplotlib bar-chart stacked-chart