🎨 Matplotlib十大高级绘图技巧,学会了升职加薪(不骗你)

🎨 Matplotlib十大高级绘图技巧,学会了升职加薪(不骗你)

👋Hello宝子们,我是你们的老朋友花姐~

这篇文章拖了好几天才写,不是我偷懒哈,是真的一边画图一边调参数,眼睛都快瞪瞎了。你们懂的,Matplotlib虽然是个老牌神器,但有时候用起来也是真"一言难尽"😂。

不过!我今天就是来把我这几天踩过的坑、熬的夜、掉的头发(不是比喻,是字面意思)全都浓缩成这篇"干到不能再干"的技巧合集!

好了,废话不多说,我们直接上车!🚗💨


技巧1:一招搞定中文乱码

说到 Matplotlib 中文乱码,真的是很多小伙伴第一次用它画图都会"骂娘"的地方(花姐当年也差点摔电脑🙃)。

为什么中文会乱码? 因为 Matplotlib 默认用的字体是英文环境下的,比如 'DejaVu Sans',它压根不认识中文字符。你非要它显示中文,它就甩你一堆小方块(乱码)当回礼。😅

示例代码:

python 复制代码
import matplotlib.pyplot as plt
import matplotlib
from matplotlib import font_manager

# 设置中文字体为微软雅黑(Windows 用户)或者 SimHei(黑体)
plt.rcParams['font.family'] = ['Microsoft YaHei']  # 或 ['SimHei']

# 如果你还遇到负号显示为方块,加上这句
plt.rcParams['axes.unicode_minus'] = False

# 测试一下
plt.title("花姐带你学 Matplotlib")
plt.plot([1, 2, 3], [4, 5, 6])
plt.xlabel("横轴:时间")
plt.ylabel("纵轴:销量")
plt.show()

💡 小细节: 设置中文字体为微软雅黑(Windows 用户)或者 SimHei(黑体)可以解决99%的中文乱码问题

技巧2:双Y轴图(左右互搏,强强联合)

有时候,我们需要把两个不同单位的东西画在一张图上,比如销量和广告点击,不画在一起还真看不出啥联系。

示例代码:

python 复制代码
import matplotlib.pyplot as plt

plt.rcParams['font.family'] = ['Microsoft YaHei']  # 或 ['SimHei']
x = range(10)
y1 = [i*2 for i in x]
y2 = [i**1.5 for i in x]

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()

ax1.plot(x, y1, 'g-', label='销量')
ax2.plot(x, y2, 'b--', label='广告点击')

ax1.set_xlabel('月份')
ax1.set_ylabel('销量', color='g')
ax2.set_ylabel('点击量', color='b')

plt.title('销量 vs 点击量')
plt.show()

💡 小细节: twinx() 是关键,给图表一个"兄弟轴"。别忘了设置颜色,否则看起来像俩亲兄弟一样傻傻分不清。


技巧3:渐变色填充曲线图(骚气满分)

这招适合用在展示趋势时,视觉效果直接提升两个档次!

示例代码:

python 复制代码
import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.family'] = ['Microsoft YaHei']  # 或 ['SimHei']
x = np.linspace(0, 10, 100)
y = np.sin(x)

fig, ax = plt.subplots()
ax.plot(x, y, color='purple')
ax.fill_between(x, y, color='purple', alpha=0.3)
plt.title("骚气满分的渐变填充图")
plt.show()

💡 小提醒: fill_between 是个宝藏函数,学会了你就是图表美工界的一股清流🌊。


技巧4:实时动态更新图(做个会动的图)

想监控 CPU、网络数据?必须整这个!

示例代码:

python 复制代码
import matplotlib.pyplot as plt
import numpy as np
import time

plt.rcParams['font.family'] = ['Microsoft YaHei']  # 或 ['SimHei']
x, y = [], []
plt.ion()
fig, ax = plt.subplots()

for i in range(100):
    x.append(i)
    y.append(np.sin(i / 10))
    ax.clear()
    ax.plot(x, y)
    plt.pause(0.05)

💡 提醒一句: 别忘了 plt.ion()plt.pause(),少一个图就不动了,气得我那天砸了杯子(当然,水杯没事,我脚倒是被玻璃扎了)


技巧5:子图排版神器(subplot2grid)

比 subplot 更灵活,适合图多空间小的情况。

示例代码:

python 复制代码
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['Microsoft YaHei']  # 或 ['SimHei']
fig = plt.figure()

ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)
ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2)
ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2)
ax4 = plt.subplot2grid((3, 3), (2, 0))
ax5 = plt.subplot2grid((3, 3), (2, 1))

plt.tight_layout()
plt.show()

💡 排坑指南: rowspancolspan 搞清楚,一开始我调了半小时,图还是像拼图碎片一样乱飞。


技巧6:保存高质量图片(不再糊成鬼)

有次我PPT用低清图被客户说"你们是不是用手机截图的",从此我就再也不敢马虎。

示例代码:

python 复制代码
plt.plot([1,2,3],[4,5,6])
plt.savefig("output.png", dpi=300)

💡 dpi 设置高点(比如 300),图就不会糊。你再配个透明背景 transparent=True,老板看了都说"稳"。


技巧7:图中加标注(要让人一眼看懂重点)

示例代码:

python 复制代码
plt.plot([1,2,3],[2,4,1])
plt.annotate('最高点', xy=(2,4), xytext=(2,4.5),
             arrowprops=dict(facecolor='black', shrink=0.05))
plt.show()

💡 你不说读者怎么知道哪个是重点?这就像打游戏不标记敌人位置,队友能气死你。


技巧8:多颜色线条一图展示(色彩缤纷版)

示例代码:

python 复制代码
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.family'] = ['Microsoft YaHei']  # 或 ['SimHei']
x = np.linspace(0, 10, 100)
for i in range(5):
    plt.plot(x, np.sin(x + i), label=f'线{i}')
plt.legend()
plt.show()

💡 养成好习惯,label + legend 必须配合用,不然老板只看到一堆五颜六色的蛇。


技巧9:堆叠柱状图(数据一目了然)

示例代码:

python 复制代码
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['Microsoft YaHei']  # 或 ['SimHei']
labels = ['一月', '二月', '三月']
a = [10, 20, 30]
b = [5, 15, 25]

plt.bar(labels, a, label='产品A')
plt.bar(labels, b, bottom=a, label='产品B')
plt.legend()
plt.show()

💡 bottom= 参数是关键,不然你就不是"堆叠",你就是"覆盖"了。


技巧10:颜色映射展示数据强弱(热图小能手)

示例代码:

python 复制代码
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.family'] = ['Microsoft YaHei']  # 或 ['SimHei']
data = np.random.rand(10, 10)
plt.imshow(data, cmap='hot', interpolation='nearest')
plt.colorbar()
plt.title('热力图')
plt.show()

💡 冷知识: 这个 imshow 除了画图还常用于图像处理,算是 Matplotlib 藏得比较深的技能树了。


写在最后

Matplotlib虽然是个"古董级"库,但它功能真的深不见底,今天这10个技巧只能说是冰山一角。

如果你能把这10招学熟,升职加薪那是板上钉钉的事了。

写到这,我去泡杯枸杞水压压惊------眼睛已经快进化成🐸了...

顺手点赞+在看就是对花姐最大的支持 ❤️

相关推荐
m0_7485548142 分钟前
golang如何实现用户订阅偏好管理_golang用户订阅偏好管理实现总结
jvm·数据库·python
smj2302_796826521 小时前
解决leetcode第3911题.移除子数组元素后第k小偶数
数据结构·python·算法·leetcode
小码哥_常2 小时前
解锁AI编程密码:程序员常用的10个AI提示词
后端
阿正呀2 小时前
Redis怎样实现本地缓存的高效失效通知
jvm·数据库·python
2501_901200532 小时前
mysql如何设置InnoDB引擎参数_优化innodb_buffer_pool
jvm·数据库·python
_.Switch2 小时前
东方财富股票数据JS逆向:secids字段和AES加密实战
开发语言·前端·javascript·网络·爬虫·python·ecmascript
Mr_sst2 小时前
Claude Code 部署与使用保姆级教程(2026 最新)
python·ai
直奔標竿3 小时前
Java开发者AI转型第二十七课!Spring AI 个人知识库实战(六)——全栈闭环收官,解锁前端流式渲染终极技巧
java·开发语言·前端·人工智能·后端·spring
瞎某某Blinder3 小时前
DFT学习记录[6]基于 HES06的能带计算+有效质量计算
python·学习·程序人生·数据挖掘·云计算·学习方法
金銀銅鐵3 小时前
[java] 编译之后的记录类(Record Classes)长什么样子(上)
java·jvm·后端