Python绘图入门:使用Matplotlib绘制柱状图
柱状图是一种常见的数据可视化方式,能够直观地展示不同类别之间的数据差异。在Python中,Matplotlib是一个非常强大且灵活的绘图库,它不仅能绘制简单的图表,还能创建复杂的多层次图形。本篇博客将带你一步步了解如何使用Matplotlib绘制一个基本的柱状图,并介绍一些常用的图表优化技巧。
1. 安装Matplotlib
在开始之前,确保你已经安装了Matplotlib库。如果还没有安装,可以使用以下命令进行安装:
pip install matplotlib
2. 绘制简单柱状图
这里我们有一组有关2024年高效毕业生就业去向的数据:
去向 | 2023届 | 2024届 |
---|---|---|
单位就业 | 57.6% | 55.5% |
慢就业(暂无具体打算) | 18.9% | 19.1% |
自由职业 | 13.2% | 13.7% |
国内继续学习 | 4.9% | 6.5% |
数据来源:智联招聘
首先,我们来绘制一个最简单的柱状图,将2024届高校毕业生去向数据进行可视化:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
# 数据
employments = ['单位就业', '慢就业(暂无具体打算)', '自由职业', '国内继续学习']
rates = [55.5, 19.1, 13.7, 6.5]# 绘制柱状图
plt.bar(employments, rates)# 添加标题和标签
plt.title('2024届高校毕业生去向')
plt.xlabel('毕业去向')
plt.ylabel('比率(%)')# 显示图表
plt.show()
在这段代码中,plt.bar()
用于创建柱状图,plt.title()
、plt.xlabel()
和plt.ylabel()
分别用于添加标题和坐标轴标签。最后,plt.show()
用于显示图表。
3. 自定义柱状图
为了让图表更加美观和信息丰富,我们可以对柱状图进行自定义。例如,可以改变柱子的颜色、添加网格、显示数值标签等。
# 自定义颜色和网格
plt.bar(categories, sales, color='skyblue')
plt.grid(axis='y', linestyle='--', alpha=0.7)# 显示数值标签
for i, value in enumerate(sales):plt.text(i, value + 0.5, str(value), ha='center')plt.show()
在这个例子中,我们将柱子颜色设为浅蓝色,并在y轴方向添加虚线网格。同时,使用plt.text()
函数在每个柱子上方显示具体数值。
这里需要注意的是,添加无指向型注释文本有两种,text()
和figtext()
方法。
text(x, y, s, fontdict=None, withdash=, **kwargs) |
---|
- x, y:表示注释文本的位置。
- s:表示注释文本的内容。
- horizontalalignment或ha:表示水平对齐的方式,可以取值为’center’、'right’或 ‘left’。
- verticalalignment或va:表示垂直对齐的方式,可以取值为’center’、‘top’、‘bottom’、‘baseline’或’center_baseline’
figtext(x, y, s, *args, **kwargs) |
---|
- x, y Float 放置文本的位置。默认情况下,它在图形坐标[0,1]中
- s String 文字字串
两种方法的不同之处在于,text()
以图形的横纵坐标进行取值,figtext()
使用完整的图形作为坐标,其中左下角表示(0,0),右上角表示(1,1)。图的中心是(0.5,0.5)。
4. 横向柱状图
如果数据类别较多,或者类别名称较长,横向柱状图可能会更适合。
# 绘制柱状图
plt.barh(employments, rates, color='lightcoral')plt.grid(axis='y', linestyle='--', alpha=0.7)# 添加标题和标签
plt.title('2024届高校毕业生去向')
plt.xlabel('比率(%)')
plt.ylabel('')
使用plt.barh()
可以轻松创建横向柱状图,其他设置与竖向柱状图类似。
5. 多系列柱状图
如果你有多个系列的数据需要同时展示,可以使用多系列柱状图来对比不同系列之间的关系。例如,我们可以对比2023届和2024届的高校毕业生去向:
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']# 数据
employments = ['单位就业', '慢就业(暂无具体打算)', '自由职业', '国内继续学习']
rates_2024 = [55.5, 19.1, 13.7, 6.5]
rates_2023 = [55.5, 19.1, 13.7, 6.5]# 设置柱子的位置
x = np.arange(len(employments))
width = 0.35 # 柱子的宽度# 绘制多系列柱状图
plt.bar(x - width/2, rates_2024, width, label='2024届')
plt.bar(x + width/2, rates_2023, width, label='2023届')# 添加标题和标签
plt.title('2024和2023届高校毕业生去向对比')
plt.xlabel('就业去向')
plt.ylabel('比率(%)')
plt.xticks(x, employments) # 将x轴标签设置为就业去向
plt.legend() # 显示图例plt.show()
在这个例子中,np.arange()
用于生成x轴的位置数组,width
设置了柱子的宽度。我们使用了两个plt.bar()
来绘制不同系列的柱子,并通过调整它们的x位置来使其并排显示。
这里没有显示数值标签,请你学习完本博客后补充代码实现该功能。
6. 结语
通过这篇博客,你已经学习了如何使用Matplotlib创建和自定义柱状图。无论是简单的单系列柱状图,还是复杂的多系列柱状图,Matplotlib都能轻松实现。掌握这些基础后,你可以进一步探索Matplotlib的更多功能,例如叠加柱状图、柱状图与折线图组合等。请关注“pythons数据可视化专栏”,带你入门python绘图。
希望这篇文章对你有所帮助,欢迎在评论区分享你的问题和经验!
往期推荐:
1.使用 Matplotlib 绘制折线图
2.Python 绘图入门