如何在Matplotlib中将条形图的值改为百分比?

如何在Matplotlib中将条形图的值改为百分比?

Matplotlib是Python中一款非常流行的绘图库,它支持绘制各种类型的图表,包括直方图、散点图、线图、条形图等等。在绘制条形图的过程中,条形图的值往往表示某种具体的数据,但我们有时需要将其转换为百分比,以更好地呈现数据的比例关系。本文将介绍如何在Matplotlib中将条形图的值改为百分比。

准备工作

在开始之前,我们需要导入Matplotlib库,并构造一些示例数据。

import matplotlib.pyplot as plt
import numpy as np

# 构造示例数据
values = [20, 35, 30, 15]
labels = ['A', 'B', 'C', 'D']

# 绘制条形图
plt.bar(labels, values)
plt.show()

将值转换为百分比

接下来,我们需要将条形图中的值转换为百分比。具体来说,我们可以先计算出总数,然后将每个值除以总数,并乘以100,即可得到对应的百分比。

# 计算总数
total = sum(values)

# 将值转换为百分比
percentages = [100 * v / total for v in values]

# 输出结果
for i in range(len(values)):
    label = labels[i]
    percentage = percentages[i]
    print('{}: {:.2f}%'.format(label, percentage))

上述代码中,首先计算总数total,然后遍历每个值,将其除以总数并乘以100得到对应的百分比,最后使用format函数输出结果。

将百分比绘制到图表上

现在我们已经得到了每个值的百分比,接下来我们需要将其绘制到条形图上。

我们可以使用text函数在每个条形上方添加对应的百分比。

# 绘制条形图及百分比
fig, ax = plt.subplots()

rects = ax.bar(labels, values)

for i in range(len(rects)):
    rect = rects[i]
    percentage = percentages[i]
    ax.text(rect.get_x() + rect.get_width() / 2., 1.05 * rect.get_height(),
            '{:.2f}%'.format(percentage),
            ha='center', va='bottom')

plt.show()

上述代码中,我们先创建一个子图ax,然后使用bar函数绘制条形图,并返回每个条形的对象rects。接着遍历每个条形,使用text函数在其上方添加对应的百分比。

运行上述代码,可以得到将条形图的值改为百分比后的图表。

完整代码

最终,我们将上述代码整合起来。

import matplotlib.pyplot as plt
import numpy as np

# 构造示例数据
values = [20, 35, 30, 15]
labels = ['A', 'B', 'C', 'D']

# 绘制条形图
plt.bar(labels, values)
plt.show()

# 计算总数
total = sum(values)

# 将值转换为百分比
percentages = [100 * v / total for v in values]

# 输出结果
for i in range(len(values)):
    label = labels[i]
    percentage = percentages[i]
    print('{}: {:.2f}%'.format(label, percentage))

# 绘制条形图及百分比
```python
fig, ax = plt.subplots()

rects = ax.bar(labels, values)

for i in range(len(rects)):
    rect = rects[i]
    percentage = percentages[i]
    ax.text(rect.get_x() + rect.get_width() / 2., 1.05 * rect.get_height(),
            '{:.2f}%'.format(percentage),
            ha='center', va='bottom')

plt.show()

结论

本文介绍了如何在Matplotlib中将条形图的值改为百分比。具体来说,我们可以先计算出每个值所占的比例,然后使用text函数将其绘制到对应的条形上方。这种方式可以更加清晰地展示数据的比例关系,是数据可视化中常用的处理方式。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程