迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Matplotlib 中的叠加条形图

作者:迹忆客 最近更新:2024/02/01 浏览次数:

我们在 Matplotlib 中使用 matplotlib.pyplot.bar() 方法生成条形图。为了将某个数据集的条形图堆叠在另一个数据集上,我们将所有需要堆叠的数据集相加,并将总和作为 bottom 参数传递给 bar() 方法。

import matplotlib.pyplot as plt

data1 = [30, 20, 10, 0, 0]
data2 = [20, 20, 20, 20, 0]
data3 = [50, 60, 70, 80, 100]

year = ["2015", "2016", "2017", "2018", "2019"]

fig, ax = plt.subplots(3, 1, figsize=(10, 8))

ax[0].bar(year, data1, color="red")
ax[0].legend(["C++"])
ax[1].bar(year, data2, color="yellow")
ax[1].legend(["JavaScript"])
ax[2].bar(year, data3, color="green")
ax[2].legend(["Python"])

plt.show()

输出:

解释堆叠条形图 Matplotlib 的例子

在这里,我们有三个独立的条形图,分别代表了某公司员工五年来对一种编程语言的偏好。我们将讨论如何将一门语言的条形图叠加到另一门语言上,并通过一张条形图来研究多年来人们对编程语言的整体选择。


叠加条形图 Matplotlib

import numpy as np
import matplotlib.pyplot as plt

data1 = [30, 20, 10, 0, 0]
data2 = [20, 20, 20, 20, 0]
data3 = [50, 60, 70, 80, 100]

year = ["2015", "2016", "2017", "2018", "2019"]

plt.figure(figsize=(9, 7))
plt.bar(year, data3, color="green", label="Python")
plt.bar(year, data2, color="yellow", bottom=np.array(data3), label="JavaScript")
plt.bar(year, data1, color="red", bottom=np.array(data3) + np.array(data2), label="C++")

plt.legend(loc="lower left", bbox_to_anchor=(0.8, 1.0))
plt.show()

输出:

Matplotlib 中的叠加条形图

它将一个条形图叠加在另一个条形图上。在图中,我们先将 data3 绘制成 Python 数据,作为其他条形图的基础,然后再绘制 data2 的条形图,将 data3 的条形图作为 data2 条形图的基础。为了将 data2 的条形图叠加到 data3 上,我们设置 bottom=np.array(data3)

同样,在绘制 data1 的条形图时,我们以 data2data3 的条形图为基础。为此,我们在绘制 data1 的条形图时,设置 bottom=np.array(data3)+np.array(data2)

需要注意的是,我们必须使用 NumPy 数组来添加 bottom 参数的数据。如果我们设置 bottom=data3+data2,它将通过在列表 data3 的末尾追加 data2 的元素来创建列表。

如果我们不想使用 NumPy 数组,我们可以使用列表推导法来添加 list 的对应元素。

import numpy as np
import matplotlib.pyplot as plt

data1 = [30, 20, 10, 0, 0]
data2 = [20, 20, 20, 20, 0]
data3 = [50, 60, 70, 80, 100]

year = ["2015", "2016", "2017", "2018", "2019"]

plt.figure(figsize=(9, 7))
plt.bar(year, data3, color="green", label="Python")
plt.bar(year, data2, color="yellow", bottom=data3, label="JavaScript")
plt.bar(
    year,
    data1,
    color="red",
    bottom=[sum(data) for data in zip(data2, data3)],
    label="C++",
)

plt.legend(loc="lower left", bbox_to_anchor=(0.8, 1.0))
plt.show()

输出:

在 Matplotlib 中使用列表推导式叠加条形图


使用 Pandasd 的 Matplotlib 叠加条形图的方法

我们也可以使用 Python 中的 Pandas 库,在 Python 中生成堆叠的柱状图。

import pandas as pd
import matplotlib.pyplot as plt

years = ["2015", "2016", "2017", "2018", "2019"]
data = {
    "Python": [50, 60, 70, 80, 100],
    "JavaScript": [20, 20, 20, 20, 0],
    "C++": [30, 20, 10, 0, 0],
}

df = pd.DataFrame(data, index=years)

df.plot(kind="bar", stacked=True, figsize=(10, 8))
plt.legend(loc="lower left", bbox_to_anchor=(0.8, 1.0))
plt.show()

输出:

使用 Pandas 在 Matplotlib 中生成堆积条形图

它从 Pandas DataFrame 中生成一个堆叠的条形图,其中一列的条形图堆叠在 DataFrame 中每个索引的另一列上。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便