🎨 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招学熟,升职加薪那是板上钉钉的事了。
写到这,我去泡杯枸杞水压压惊------眼睛已经快进化成🐸了...
顺手点赞+在看就是对花姐最大的支持 ❤️