📌  相关文章
📜  matplotlib 在阈值下更改条形颜色 - Python (1)

📅  最后修改于: 2023-12-03 15:17:35.397000             🧑  作者: Mango

Matplotlib 在阈值下更改条形颜色 - Python

Matplotlib 是一个用于数据可视化的 Python 库,提供了许多绘制图表的工具和设置选项。本篇文章将介绍如何在 Matplotlib 中实现在阈值下更改条形颜色的功能。

准备工作

在开始本文之前,请确认已正确安装了 Matplotlib 库。如果没有安装,可以使用以下命令安装:

pip install matplotlib

导入 Matplotlib 库和 NumPy 库:

import matplotlib.pyplot as plt
import numpy as np
实现步骤
1. 创建数据

本文将使用一个简单的示例数据,包含 5 个类别和各自的得分。数据如下:

categories = ['A', 'B', 'C', 'D', 'E']
scores = [40, 70, 90, 30, 60]
2. 绘制直方图

使用 Matplotlib 中的 plt.bar() 函数绘制直方图,代码如下:

plt.bar(categories, scores)
plt.show()

我们可以看到直方图中所有的条形的颜色都是一样的,为默认颜色。

3. 设置阈值和颜色

接下来,我们将设置一个阈值,如果某一类别的得分高于该阈值,我们将其条形的颜色设置为蓝色,如果低于该阈值,将条形颜色设置为红色。

首先,我们定义阈值和颜色:

threshold = 60
color_below_threshold = 'r'
color_above_threshold = 'b'

然后,我们使用 NumPy 库中的 where() 函数来将每个条形的颜色设置为对应的值:

colors = np.where(np.array(scores) > threshold, color_above_threshold, color_below_threshold)

where() 函数返回一个与原始 scores 列表大小相同的 bool 数组,其中值为 True 表示该位置的得分高于阈值,否则为 False。然后将该数组传递给 NumPy 库中的 np.where() 函数,该函数在 True 位置返回 color_above_threshold,否则返回 color_below_threshold,从而得到一个对应于每个条形的颜色的列表。

最后,我们将颜色列表传递给 plt.bar() 函数的 color 参数:

plt.bar(categories, scores, color=colors)
plt.show()

运行完整代码,可以得到如下结果:

import matplotlib.pyplot as plt
import numpy as np

categories = ['A', 'B', 'C', 'D', 'E']
scores = [40, 70, 90, 30, 60]

plt.figure(figsize=(8, 5))

threshold = 60
color_below_threshold = 'r'
color_above_threshold = 'b'

colors = np.where(np.array(scores) > threshold, color_above_threshold, color_below_threshold)

plt.bar(categories, scores, color=colors)

plt.title('Scores of Categories')
plt.xlabel('Categories')
plt.ylabel('Scores')
plt.ylim([0, 100])

plt.show()

result

结论

在本文中,我们介绍了如何在 Matplotlib 中实现在阈值下更改条形颜色的功能。通过使用 np.where() 函数,我们可以轻松地对所有条形进行颜色编码,从而将数据可视化为易于理解的直方图。