相关疑难解决方法(0)

如何在matplotlib中为条形图添加组标签?

我想使用matplotlib的条形图功能绘制以下形式的数据:

data = {'Room A':
           {'Shelf 1':
               {'Milk': 10,
                'Water': 20},
            'Shelf 2':
               {'Sugar': 5,
                'Honey': 6}
           },
        'Room B':
           {'Shelf 1':
               {'Wheat': 4,
                'Corn': 7},
            'Shelf 2':
               {'Chicken': 2,
                'Cow': 1}
           }
       }
Run Code Online (Sandbox Code Playgroud)

条形图应该看起来像这样.应从x轴上的标签可见条形图组.有没有办法用matplotlib做到这一点?

python matplotlib bar-chart

28
推荐指数
2
解决办法
8414
查看次数

在 Pandas 多索引数据帧上绘制两个级别的 x_ticklabels

我有一个多索引数据框,其中索引是从日期推导出来的。它包括年份和季度值。

我想要实现的是一个在 x 轴上有两组刻度标签的图。次要刻度标签应表示季度值(1 到 4),主要刻度标签应表示年份值。但是,我不希望显示所有年份的刻度标签,只显示四个季度中每个季度的唯一年份。

这很容易在 excel 图中表示,这是我试图重现的示例。 在此处输入图片说明

这是我的数据集中的一个示例。

serotype_df = pd.DataFrame({'13v': {(2002, 1): 5,
  (2002, 2): 9,
  (2002, 3): 23,
  (2002, 4): 11,
  (2003, 1): 1,
  (2003, 2): 12,
  (2003, 3): 22,
  (2003, 4): 15,
  (2004, 1): 10,
  (2004, 2): 11,
  (2004, 3): 30,
  (2004, 4): 11,
  (2005, 1): 9,
  (2005, 2): 20,
  (2005, 3): 20,
  (2005, 4): 7},
 '23v': {(2002, 1): 1,
  (2002, 2): 8,
  (2002, 3): 18,
  (2002, 4): 5,
  (2003, 1): 5,
  (2003, 2): 16, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib python-3.x pandas

11
推荐指数
1
解决办法
5817
查看次数

Python DataFrame - 为具有按列分组(至少两列)的数据框绘制条形图

我一直在努力使用 matlplotlib 在 python 中重新创建这个 Excel 图表:

在此输入图像描述

数据位于数据框中;我正在尝试自动化生成该图的过程。

我尝试过拆开我的数据框、子图,但我还没有成功创建在 Excel 中如此优雅的“区域”索引。我已经成功地在没有这个“区域”索引的情况下绘制了图表,但这并不是我真正想要做的。

这是我的代码:

data = pd.DataFrame(
    {
        'Factory Zone':
        ["AMERICAS","APAC","APAC","APAC","APAC","APAC","EMEA","EMEA","EMEA","EMEA"],
        'Factory Name':
        ["Chocolate Factory","Crayon Factory","Jobs Ur Us", "Gibberish US","Lil Grey", "Toys R Us","Food Inc.",
        "Pet Shop", "Bonbon Factory","Carrefour"],
        'Production Day 1':
        [24,1,9,29,92,79,4,90,42,35],
        'Production Day 2':
        [2,43,17,5,31,89,44,49,34,84]
    })
df = pd.DataFrame(data)
print(df)
# Without FactoryZone, it works:
df = df.drop(['Factory Zone'], axis=1)
image = df.plot(kind="bar")
Run Code Online (Sandbox Code Playgroud)

数据如下所示:

  Unnamed: 0 FactoryZone       Factory Name  Production Day 1  Production Day 2
0           1    AMERICAS  Chocolate Factory …
Run Code Online (Sandbox Code Playgroud)

python group-by matplotlib bar-chart dataframe

4
推荐指数
1
解决办法
2008
查看次数