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

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

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

相关推荐
冼紫菜2 分钟前
基于Redis实现高并发抢券系统的数据同步方案详解
java·数据库·redis·后端·mysql·缓存·性能优化
异常君14 分钟前
HTTP头中的Accept-Encoding与Content-Encoding深度剖析
后端·nginx·http
异常君20 分钟前
MySQL重复数据克星:7种高效处理方案全解析
java·后端·mysql
异常君24 分钟前
Spring 定时任务执行一次后不再触发?5 大原因与解决方案全解析
java·后端·spring
无心水26 分钟前
基础服务系列-Jupyter Notebook 支持Java
ide·python·jupyter
异常君26 分钟前
Java 序列化工具:@JSONField 注解实战解析与应用技巧
java·后端·json
风静雪冷30 分钟前
Ubuntu中选择Python虚拟环境
开发语言·python
MaYuKang31 分钟前
「ES数据迁移可视化工具(Python实现)」支持7.x索引数据互传
大数据·数据库·python·mysql·elasticsearch
菜鸟谢41 分钟前
c# 文件系统
后端
kadog1 小时前
《Python3网络爬虫开发实战(第二版)》配套案例 spa6
开发语言·javascript·爬虫·python