Matplotlib 200个小技巧-上篇
有人说之前的Matplotlib教程不够基础👉Python matplotlib保姆级教程
这里重新补充基础知识点《Matplotlib 200个小技巧-上篇》,每个技巧都配上代码和超接地气的注释,干货满满,赶紧收藏起来,边学边练,画图效率和颜值蹭蹭往上涨!
1. 导入 Matplotlib 的正确姿势
# 别老写全名,plt 简洁又顺手,省下的时间喝杯咖啡多好!
import matplotlib.pyplot as plt
2. 快速画折线图
# 一行代码,折线图就出来了,比 Excel 还快,爽不爽?
plt.plot([1, 2, 3], [4, 5, 6])
3. 加个标题
# 给图加个标题多重要啊,不然老板看了还得猜半天!
plt.title("我的第一个图")
4. 设置坐标轴标签
# X轴Y轴标清楚,谁看了都夸你细心!
plt.xlabel("X轴")
plt.ylabel("Y轴")
5. 显示网格线
# 加个网格线,数据对比一目了然,专业感蹭蹭往上涨!
plt.grid(True)
6. 调整图的大小
# 图太小看不清?调成 10x6,眼睛舒服多了!
plt.figure(figsize=(10, 6))
7. 保存图片
# 高清保存下来,发给同事显摆显摆,多有面子!
plt.savefig("my_plot.png")
8. 显示图表
# 画完不显示等于白忙活,别忘了这一步啊!
plt.show()
9. 设置线条颜色
# 红色多抓眼球啊,调个颜色瞬间变高级!
plt.plot([1, 2, 3], [4, 5, 6], color='red')
10. 改线条样式
# 虚线、实线随便换,风格自己定,多酷!
plt.plot([1, 2, 3], [4, 5, 6], linestyle='--')
11. 加个图例
# 多条线挤一起不怕,加个图例,分分钟变清晰!
plt.plot([1, 2, 3], [4, 5, 6], label="数据1")
plt.plot([1, 2, 3], [6, 5, 4], label="数据2")
plt.legend()
12. 调整字体大小
# 标题太小看不清?放大到 16,老远都能瞅见!
plt.title("标题", fontsize=16)
13. 设置中文字体
# 中文乱码太头疼,换个 SimHei,妥妥解决!
plt.rcParams['font.sans-serif'] = ['SimHei']
14. 去掉顶部和右侧边框
# 边框多了显乱,砍掉顶部和右侧,简洁又大气!
plt.gca().spines['top'].set_visible(False)
plt.gca().spines['right'].set_visible(False)
15. 自定义刻度
# 刻度默认太死板,自己改成“低中高”,多有意思!
plt.xticks([0, 1, 2], ["低", "中", "高"])
16. 画散点图
# 折线看腻了?试试散点图,数据分布一清二楚!
plt.scatter([1, 2, 3], [4, 5, 6])
17. 调整散点大小
# 散点太小不显眼?调大到 100,视觉效果杠杠的!
plt.scatter([1, 2, 3], [4, 5, 6], s=100)
18. 填充颜色
# 想让图高级点?填充个浅蓝色,层次感立马出来!
plt.fill_between([1, 2, 3], [4, 5, 6], [2, 3, 4], color='lightblue')
19. 画柱状图
# 柱状图简单又直观,数据对比效果绝了!
plt.bar([1, 2, 3], [4, 5, 6])
20. 柱子加颜色
# 灰扑扑的柱子多没劲,天蓝色一上,心情都变好了!
plt.bar([1, 2, 3], [4, 5, 6], color='skyblue')
21. 设置透明度
# 线条重叠看不清?加个透明度,层次分明又好看!
plt.plot([1, 2, 3], [4, 5, 6], alpha=0.5)
22. 加阴影
# 柱子加个边框,立体感蹭蹭往上涨,超有质感!
plt.bar([1, 2, 3], [4, 5, 6], color='blue', edgecolor='black', linewidth=1)
23. 调整边距
# 标签挤在一起多尴尬,一键优化布局,完美!
plt.tight_layout()
24. 用调色盘
# 调颜色太麻烦?内置调色盘一键搞定,省心又好看!
plt.plot([1, 2, 3], [4, 5, 6], color=plt.cm.Set1(0))
25. 画饼图
# 想秀占比?饼图简单几行就搞定,太方便了!
plt.pie([30, 40, 30], labels=['A', 'B', 'C'])
26. 饼图加百分比
# 光看饼图不够直观?加个百分比,谁看了都明白!
plt.pie([30, 40, 30], autopct='%1.1f%%', labels=['A', 'B', 'C'])
27. 饼图突出某块
# 重点数据得突出啊,explode 一调,焦点全在这块!
plt.pie([30, 40, 30], explode=[0, 0.1, 0], labels=['A', 'B', 'C'])
28. 设置背景色
# 默认白底太单调,换个浅灰色,气质都不一样了!
plt.gca().set_facecolor('lightgray')
29. 加文本标注
# 想提醒大家看重点?直接标个文字,简单又实用!
plt.text(1, 5, "这里是重点")
30. 画双Y轴
# 数据太多挤不下?双Y轴安排上,信息量翻倍!
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot([1, 2, 3], [4, 5, 6])
ax2.plot([1, 2, 3], [60, 50, 40], color='red')
31. 画热力图
# 数据多到眼花?热力图一出,趋势秒懂!
plt.imshow([[1, 2], [3, 4]], cmap='hot')
32. 加色条
# 热力图配个色条,专业感直接爆棚!
plt.imshow([[1, 2], [3, 4]], cmap='hot')
plt.colorbar()
33. 画3D图
# 平面图看腻了?3D图一上,惊艳全场!
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.plot3D([1, 2, 3], [4, 5, 6], [7, 8, 9])
34. 动态图初体验
# 想让图动起来?动画功能试试,数据也能跳舞!
from matplotlib.animation import FuncAnimation
fig, ax = plt.subplots()
x, y = [], []
line, = ax.plot([], [])
defupdate(frame):
x.append(frame)
y.append(frame)
line.set_data(x, y)
return line,
ani = FuncAnimation(fig, update, frames=range(10))
35. 设置刻度旋转
# 标签太长挤一起?旋转45度,完美解决!
plt.xticks(rotation=45)
36. 画误差条
# 数据得严谨,误差条一加,科学感满满!
plt.errorbar([1, 2, 3], [4, 5, 6], yerr=[0.1, 0.2, 0.3])
37. 对数坐标
# 数据跨度太大看不清?对数坐标救场!
plt.yscale('log')
38. 画升序降序
# 想秀排序效果?升序降序一图搞定!
plt.plot([1, 2, 3], [4, 5, 6], 'o-', label='升序')
plt.plot([1, 2, 3], [6, 5, 4], 'o-', label='降序')
plt.legend()
39. 子图布局
# 一张图不够用?子图安排上,信息量翻倍!
plt.subplot(2, 1, 1)
plt.plot([1, 2, 3], [4, 5, 6])
plt.subplot(2, 1, 2)
plt.plot([1, 2, 3], [6, 5, 4])
40. 共享坐标轴
# 子图对齐多舒服,共享X轴,上下图美美哒!
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)
ax1.plot([1, 2, 3], [4, 5, 6])
ax2.plot([1, 2, 3], [6, 5, 4])
41. 快速清空画布
# 画错了想重来?一键清空,省时省力!
plt.clf()
42. 批量设置线条
# 多条线一起画,谁还一条条调啊!
lines = plt.plot([1, 2, 3], [4, 5, 6], [1, 2, 3], [6, 5, 4])
43. 关闭交互模式
# 批量画图卡顿?关掉交互,速度飞起!
plt.ioff()
44. 保存透明背景
# PPT 用图背景得透明,这一招超实用!
plt.savefig("plot.png", transparent=True)
45. 检查当前轴
# 画图乱了套?随时检查当前轴,心里有数!
plt.gca()
46. 快速复制图表
# 想再画个一样的?复制粘贴,so easy!
fig1 = plt.figure()
plt.plot([1, 2, 3], [4, 5, 6])
fig2 = plt.figure()
fig1.canvas.draw()
47. 设置全局样式
# 调参太累?一键换 ggplot 风格,省心又好看!
plt.style.use('ggplot')
48. 查看可用样式
# 风格挑花眼?看看有哪些可选,总有一款适合你!
print(plt.style.available)
49. 批量加标题
# 多子图还得一个个加标题?批量搞定,效率爆棚!
fig, axs = plt.subplots(2)
for ax in axs:
ax.set_title("标题")
50. 快速预览
# 边调边看多爽,交互模式开起来!
plt.ion()
51. 设置线条宽度
# 线条太细看不清?加粗到 2,粗中有细!
plt.plot([1, 2, 3], [4, 5, 6], linewidth=2)
52. 画水平线
# 想标个基准线?水平线一拉,简单又实用!
plt.axhline(y=5, color='gray', linestyle='--')
53. 画垂直线
# 时间点要突出?垂直线一画,重点全在这!
plt.axvline(x=2, color='gray', linestyle='--')
54. 设置刻度范围
# 刻度范围乱七八糟?自己定个范围,清爽多了!
plt.xlim(0, 5)
plt.ylim(0, 10)
55. 反转坐标轴
# 数据倒挂看着别扭?反转一下,舒服了!
plt.gca().invert_yaxis()
56. 设置刻度间隔
# 刻度太密挤成一团?调个间隔,疏密有致!
plt.xticks(range(0, 10, 2))
57. 画堆叠柱状图
# 数据叠起来看多直观,堆叠柱状图安排上!
plt.bar([1, 2, 3], [2, 3, 4], label='A')
plt.bar([1, 2, 3], [1, 2, 1], bottom=[2, 3, 4], label='B')
plt.legend()
58. 画水平柱状图
# 竖着看腻了?横着画柱状图,换个角度更清爽!
plt.barh([1, 2, 3], [4, 5, 6])
59. 设置柱子宽度
# 柱子太粗显笨重?调个宽度,精致感立马有!
plt.bar([1, 2, 3], [4, 5, 6], width=0.5)
60. 画等高线图
# 数据复杂看不懂?等高线图一出,层次感满满!
import numpy as np
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y)
plt.contour(X, Y, Z)
61. 填充等高线
# 等高线太空洞?填充颜色,视觉效果更饱满!
plt.contourf(X, Y, Z, cmap='viridis')
62. 设置色条标签
# 色条没说明谁懂啊?加个标签,清晰又专业!
plt.contourf(X, Y, Z)
cbar = plt.colorbar()
cbar.set_label("数值大小")
63. 画向量场
# 想秀方向感?向量场一画,数据动向全掌握!
x, y = np.meshgrid(np.arange(0, 5), np.arange(0, 5))
u = np.sin(x)
v = np.cos(y)
plt.quiver(x, y, u, v)
64. 设置散点颜色
# 散点颜色单调多无聊,随手一调,活力满满!
plt.scatter([1, 2, 3], [4, 5, 6], c='purple')
65. 用数据控制散点颜色
# 颜色还能反映数据大小?太酷了,直接上!
plt.scatter([1, 2, 3], [4, 5, 6], c=[1, 2, 3], cmap='Blues')
66. 设置散点形状
# 圆点看腻了?换个星星形状,个性爆棚!
plt.scatter([1, 2, 3], [4, 5, 6], marker='*')
67. 画箱线图
# 数据分布想一目了然?箱线图简单又实用!
plt.boxplot([1, 2, 3, 4, 5])
68. 自定义箱线颜色
# 箱线图灰扑扑多没劲,加点颜色亮起来!
box = plt.boxplot([1, 2, 3, 4, 5])
for whisker in box['whiskers']:
whisker.set(color='blue')
69. 画小提琴图
# 箱线图不够炫?小提琴图一出,数据分布美炸了!
plt.violinplot([1, 2, 3, 4, 5])
70. 设置图例位置
# 图例挡住数据多尴尬,挪个位置多清爽!
plt.plot([1, 2, 3], [4, 5, 6], label='数据')
plt.legend(loc='upper left')
71. 设置图例标题
# 图例还得有个名头,加个标题更专业!
plt.plot([1, 2, 3], [4, 5, 6], label='数据')
plt.legend(title='图例说明')
72. 调整图例字体
# 图例字体太小看不清?调大一点,舒服多了!
plt.plot([1, 2, 3], [4, 5, 6], label='数据')
plt.legend(prop={'size': 12})
73. 设置坐标轴颜色
# 坐标轴黑乎乎多单调,换个颜色亮眼又好看!
plt.gca().spines['bottom'].set_color('blue')
74. 隐藏坐标轴
# 有时候坐标轴多余,直接藏起来,清爽又简洁!
plt.axis('off')
75. 设置刻度方向
# 刻度朝里朝外自己挑,细节控的最爱!
plt.tick_params(axis='x', direction='in')
76. 画极坐标图
# 平面图玩腻了?极坐标一上,圆形美感绝了!
r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r
plt.polar(theta, r)
77. 设置极坐标刻度
# 极坐标刻度乱糟糟?调一下,整齐又好看!
ax = plt.subplot(111, polar=True)
ax.set_xticks(np.pi/180 * np.linspace(0, 360, 8, endpoint=False))
78. 画面积图
# 数据变化想更直观?面积图一画,趋势全在眼前!
plt.stackplot([1, 2, 3], [4, 5, 6], [1, 2, 1])
79. 设置线条标记
# 线条加个小标记,数据点一目了然!
plt.plot([1, 2, 3], [4, 5, 6], marker='o')
80. 调整标记大小
# 标记太小看不清?调大一点,显眼又好看!
plt.plot([1, 2, 3], [4, 5, 6], marker='o', markersize=10)
81. 设置标题位置
# 标题默认居中不好看?挪个位置,随心所欲!
plt.title("标题", loc='left')
82. 加标题背景
# 标题加个框框,高级感立马有!
plt.title("标题", bbox=dict(facecolor='lightyellow', edgecolor='black'))
83. 设置刻度字体
# 刻度字体太小看不清?调大一点,谁看了都夸!
plt.tick_params(axis='both', labelsize=12)
84. 画步进图
# 数据跳跃感强?步进图一画,变化超直观!
plt.step([1, 2, 3], [4, 5, 6])
85. 设置步进样式
# 步进图还能调样式,细节控的最爱!
plt.step([1, 2, 3], [4, 5, 6], where='post')
86. 画误差区域
# 数据有波动?误差区域一画,靠谱又好看!
plt.fill_between([1, 2, 3], [4, 5, 6], [3, 4, 5], alpha=0.2)
87. 设置网格样式
# 网格线单调?换个虚线,风格立马不一样!
plt.grid(True, linestyle='--', alpha=0.7)
88. 画对角线
# 想加个参考线?对角线一画,简洁又实用!
plt.plot([0, 10], [0, 10], 'k--')
89. 设置坐标轴比例
# 图变形了咋办?固定比例,完美还原!
plt.axis('equal')
90. 画多边形
# 想画个自定义形状?多边形安排上,创意满满!
from matplotlib.patches import Polygon
plt.gca().add_patch(Polygon([[1, 1], [2, 3], [3, 1]], color='green', alpha=0.5))
91. 设置子图间距
# 子图挤一起多难看,调个间距,舒服多了!
plt.subplots_adjust(wspace=0.4, hspace=0.4)
92. 画圆形散点
# 散点还能画圆?大小随数据变,太酷了!
plt.scatter([1, 2, 3], [4, 5, 6], s=[100, 200, 300])
93. 设置子图背景
# 子图背景单调?换个颜色,个性爆棚!
fig, ax = plt.subplots()
ax.set_facecolor('lightblue')
94. 画箭头
# 想指个方向?箭头一画,重点全在这!
plt.arrow(1, 1, 1, 1, head_width=0.1, color='red')
95. 设置箭头样式
# 箭头还能调形状,细节控的最爱!
plt.arrow(1, 1, 1, 1, head_width=0.1, head_length=0.2, fc='blue', ec='black')
96. 画折线填充
# 折线下加个填充,数据趋势更直观!
plt.plot([1, 2, 3], [4, 5, 6])
plt.fill_between([1, 2, 3], [4, 5, 6], 0, alpha=0.3)
97. 设置色条方向
# 色条竖着不好看?横着摆,布局更灵活!
plt.imshow([[1, 2], [3, 4]])
plt.colorbar(orientation='horizontal')
98. 画饼图阴影
# 饼图太平面?加个阴影,立体感立马有!
plt.pie([30, 40, 30], labels=['A', 'B', 'C'], shadow=True)
99. 设置饼图半径
# 饼图太大占地方?调个半径,小巧又精致!
plt.pie([30, 40, 30], labels=['A', 'B', 'C'], radius=0.8)
100. 画多组柱状图
# 多组数据咋对比?并排放一起,清清楚楚!
x = np.array([1, 2, 3])
plt.bar(x - 0.2, [4, 5, 6], width=0.4, label='A')
plt.bar(x + 0.2, [3, 4, 5], width=0.4, label='B')
plt.legend()
写在最后
前100个技巧到这里就结束了,更多精彩见下一篇,也可以学习更系统的教程,
推荐阅读: 👉Python matplotlib保姆级教程 👉保姆级matplotlib教程—详细目录 👉Python seaborn保姆级教程 👉保姆级seaborn教程:详细目录
加入学习(收费)