🎨 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()

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


技巧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招学熟,升职加薪那是板上钉钉的事了。

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

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

相关推荐
深蓝AI几秒前
Python 3.13 的 Queue.shutdown:异步消费者终于能正常收工了
后端
尹人入圣31 分钟前
目前热门的IP驱动产业新场景新工具
网络·python·网络协议·tcp/ip
武子康38 分钟前
MultiNet6 空闲崩溃:`EXCVADDR=0x8` 后又出现 `CORRUPT HEAP`
人工智能·后端·agent
Nuanyt1 小时前
Agent 学习笔记(下篇三):上线工程、进阶选择与操作界面(Stage 7 / 7.5 / 8 + 延伸路线)
笔记·python·学习·memory·aiagent·harness
吴卫斌1 小时前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化
2601_967987372 小时前
Python——入门级(定义功能def函数)
python·函数·可变参数·默认参数·关键字参数
武子康2 小时前
MultiNet7 每轮都 clean,ESP32-P4 内存为什么还在掉?
人工智能·后端·agent
超级架构师2 小时前
PRAXO-CORE 2.5.0:用 conformance 和显式边界构建 Go Agent 框架
开发语言·人工智能·后端·golang·ai编程·智能体框架·praxo-core
陈随易3 小时前
AI 运维服务器,安全又可靠的方法
前端·后端·程序员
专注仿真4 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法