大家好!今天我要和大家聊一个特别有趣的话题 —— 用matplotlib来做数据可视化。你是否好奇过如何把枯燥的数据变成生动的图表?或者想知道那些漂亮的统计图是怎么做出来的?跟着我一起来探索这个神奇的数据可视化世界吧!
这里插播一条粉丝福利,如果你正在学习Python或者有计划学习Python,想要突破自我,对未来十分迷茫的,可以点击这里获取最新的Python学习资料和学习路线规划(免费分享,记得关注)
一、初识matplotlib:你的数据可视化好帮手
还记得我们小时候画的第一幅画吗?可能是几根简单的线条,但却充满了无限的创意。在Python中,matplotlib就像是我们的数字画笔,让我们能够用代码来作画,将数据变成图形。
首先,让我们准备好我们的"画笔":
import matplotlib.pyplot as plt
import numpy as np # 我们需要numpy来帮助生成一些数据
# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
💡 小贴士:如果你在显示中文时遇到方框或乱码,记得设置字体哦!Windows用户可以使用'SimHei',Mac用户可以使用'Arial Unicode MS'。
二、绘制你的第一张图:线形图
想象一下,你正在记录一周的温度变化。让我们把这些数据用线形图展示出来:
# 准备数据
days = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
temperatures = [20, 22, 23, 19, 21, 25, 22]
# 创建画布
plt.figure(figsize=(10, 6)) # 设置图的大小,单位是英寸
# 绘制线形图
plt.plot(days, temperatures, marker='o', linestyle='-', color='#FF6B6B', linewidth=2)
# 添加标题和轴标签
plt.title('一周温度变化', fontsize=14)
plt.xlabel('日期', fontsize=12)
plt.ylabel('温度 (°C)', fontsize=12)
# 添加网格线让图表更清晰
plt.grid(True, linestyle='--', alpha=0.7)
# 显示图表
plt.show()
三、让图表更丰富:多种图表类型
就像画画有素描、水彩、油画等不同形式,matplotlib也提供了多种图表类型。让我们来看看最常用的几种:
1. 柱状图:展示分类数据
# 准备数据
categories = ['苹果', '香蕉', '橙子', '葡萄']
quantities = [30, 25, 15, 35]
# 创建柱状图
plt.figure(figsize=(8, 6))
plt.bar(categories, quantities, color=['#FF9999', '#66B2FF', '#99FF99', '#FFCC99'])
plt.title('水果销售数量统计')
plt.xlabel('水果种类')
plt.ylabel('销售数量(个)')
# 在柱子上方添加数值标签
for i, v in enumerate(quantities):
plt.text(i, v + 1, str(v), ha='center')
plt.show()
2. 饼图:展示占比关系
# 准备数据
activities = ['学习', '睡觉', '运动', '娱乐']
hours = [8, 7, 2, 7]
# 创建饼图
plt.figure(figsize=(8, 8))
plt.pie(hours, labels=activities, autopct='%1.1f%%',
colors=['#FF9999', '#66B2FF', '#99FF99', '#FFCC99'])
plt.title('日常活动时间分配')
plt.axis('equal') # 保证饼图是圆的
plt.show()
四、数据可视化小技巧
-
配色很重要:
-
使用适当的颜色搭配能让图表更专业
-
可以使用预定义的颜色映射:
plt.cm.viridis
、plt.cm.plasma
等
-
-
布局要清晰:
-
使用
plt.subplots()
创建子图 -
合理设置图表大小和间距
-
-
标签要规范:
-
给图表添加清晰的标题
-
轴标签要带单位
-
适当添加图例
-
来看一个综合示例:
# 创建一个包含两个子图的图表
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 5))
# 第一个子图:温度变化
ax1.plot(days, temperatures, marker='o', color='#FF6B6B')
ax1.set_title('温度变化')
ax1.set_xlabel('日期')
ax1.set_ylabel('温度 (°C)')
ax1.grid(True)
# 第二个子图:水果销量
ax2.bar(categories, quantities, color=['#FF9999', '#66B2FF', '#99FF99', '#FFCC99'])
ax2.set_title('水果销量')
ax2.set_xlabel('水果种类')
ax2.set_ylabel('销售数量(个)')
# 调整子图之间的间距
plt.tight_layout()
plt.show()
五、练习时间!
让我们来做一个小练习,巩固今天学到的知识:
📝 练习题:
-
创建一个展示你最近一个月每日学习时间的折线图
-
用饼图展示你的一天24小时时间分配
-
挑战题:创建一个包含折线图和柱状图的组合图表,展示某产品的销量和价格关系
常见问题和解决方案
-
中文显示问题:
-
设置字体:
plt.rcParams['font.sans-serif'] = ['SimHei']
-
Mac用户可能需要使用其他中文字体
-
-
图表保存:
-
plt.savefig('my_chart.png', dpi=300, bbox_inches='tight')
-
内存管理:
-
记得使用
plt.close()
关闭不需要的图表 -
在绘制大量图表时特别重要
-
最后,我精心筹备了一份全面的Python学习大礼包,完全免费分享给每一位渴望成长、希望突破自我现状却略感迷茫的朋友。无论您是编程新手还是希望深化技能的开发者,都欢迎加入我们的学习之旅,共同交流进步!
🌟 学习大礼包包含内容:
Python全领域学习路线图:一目了然,指引您从基础到进阶,再到专业领域的每一步学习路径,明确各方向的核心知识点。
超百节Python精品视频课程:涵盖Python编程的必备基础知识、高效爬虫技术、以及深入的数据分析技能,让您技能全面升级。
实战案例集锦:精选超过100个实战项目案例,从理论到实践,让您在解决实际问题的过程中,深化理解,提升编程能力。
华为独家Python漫画教程:创新学习方式,以轻松幽默的漫画形式,让您随时随地,利用碎片时间也能高效学习Python。
互联网企业Python面试真题集:精选历年知名互联网企业面试真题,助您提前备战,面试准备更充分,职场晋升更顺利。
👉 立即领取方式:只需【点击这里】,即刻解锁您的Python学习新篇章!让我们携手并进,在编程的海洋里探索无限可能