Python Matplotlib绘图完整指南:从基础命令到高级定制

凌晨两点半
凌晨两点半
发布时间:2026-10-12 | 2人浏览过
原创

本文详细介绍Python中Matplotlib库的核心绘图功能。内容涵盖基础绘图命令、颜色与线型设置、中文及特殊符号显示、子图布局、坐标轴与标题定制、图例管理、数据标注及图片保存等关键操作。通过具体代码示例,帮助开发者快速掌握高质量图表的绘制技巧,解决常见显示问题。

一、前言

Python的Matplotlib库功能强大,能够绘制多种类型的图像。在开始之前,需要确保已安装基础依赖库,如numpy、matplotlib或pandas。

二、基础命令

首先介绍绘图过程中常用的基础命令:

1. plt.plot(x,y)是核心绘图命令。\n①基础画图:

plt.plot(x, y)

②设置颜色:

color属性\n若无特殊需求,可不手动指定颜色,Matplotlib会自动为不同线条分配颜色。使用ax.plot效果相同。

plt.plot(x, y, color = 'red')

③设置线型:

lineStyle属性\n可选值包括'-', ‘–', ‘-.', ‘:', ‘None', ' ', ‘', ‘solid', ‘dashed', ‘dashdot', 'dotted'等。

plt.plot(x, y, lineStyle = 'dashdot')

④设置标注类型:

marker属性\n可选的标记包括'o','*',‘x'等。

plt.plot(x, y ,marker='x')

⑤设置图例:

label属性。

plt.plot(x, y ,marker='o',label='语文成绩')
plt.plot(x, y ,marker='*',label='数学成绩')
plt.plot(x, y ,marker='x',label='英语成绩')

仅设置label不会直接显示图例,还需配合loc参数指定位置,具体见后续讲解。

plt.legend(loc='upper left')

三、正常显示中文:

①windows系统:

plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']

mac系统:\n此处为示例设置,也可配置其他中文字体。

plt.rcParams["font.family"] = 'Arial Unicode MS'

②正常显示符号:

plt.rcParams['axes.unicode_minus'] = False

四、设置图样或子图

①若只绘制一张图,可通过figsize设置x轴和y轴方向图片大小的比例。需合理设置,否则可能导致图片显示不全。通过savefig命令保存时,也按此比例保存。

f = plt.figure(figsize=(8,6))

或者,虽然使用subplots命令,若不指定nrows和ncols,默认仅有一个子图。

f, ax = plt.subplots(figsize=(8,6))

ax表示当前坐标轴。

ax = plt.gca()

若包含多个子图:\nnrows为行数,ncols为列数,figsize为图片尺寸。

f, ax = plt.subplots(nrows=2,ncols=1,figsize=(8,6),facecolor='white')

或者

fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)
ax2 = fig.add_subplot(2,1,2)
ax1.plot(x,y)
ax2.plot(x,z)

或者

ax1 = plt.subplot(2,1,1)
ax2 = plt.subplot(2,1,2)
ax1.plot(x,y)
ax2.plot(x,z)

其他属性:第一个参数标记窗口名称,dpi设置分辨率。

f = plt.figure('成绩窗口',figsize=(8,6),facecolor='white',dpi=100)

②设置图片背景色:

f = plt.figure(figsize=(8,6),facecolor='blue')

若要设置图片前景色,需使用

ax.set(facecolor='white')

五、设置x轴或y轴相关属性:

①设置x轴的刻度:\n需指定标注位置及具体值,可通过fontsize指定大小。

x = [0,2,4,6,8]
x_label = ['第一学期','第二学期','第三学期','第四学期','第五学期']
plt.xticks(x, x_label,fontsize=13)

xticks支持latex格式,

x_label = [r'$e^x$',r'$x_1^2$',r'$\lambda$',r'$\frac{1}{2}$',r'$\pi$']

当刻度值较多时,可将x轴刻度竖排显示:\n只需在x_label中需要换行的位置加入'\n’换行符即可。

x = [0,2,4,6,8]
x_label = ['第\n一\n学\n期','第二\n学期','第\n三\n学\n期','第四\n学期','第五\n学期']
plt.xticks(x, x_label,fontsize=13)#这有一张图

②设置x轴的标签:\n这两条命令作用相同。

plt.xlabel(u"学期")
ax.set_xlabel(u"学期")#设置x轴的标签值

xlabel同样支持latex

plt.xlabel(u"$x^2$")

③设置x轴的范围:\n这两条命令作用相同。\n通常无需手动指定范围,程序会根据输入的最大值和最小值自动确定。

plt.xlim(0,100)
ax.set_xlim(0,100)

设置y轴的相关属性方法与x轴相同,只需将x替换为y即可。

六、设置标题:

fontsize为大小,fontweight指定加粗。下面两条命令作用相同。

plt.title('小明第一至第四学期成绩变化折线图',fontsize=18,fontweight='bold')
ax.set_title('小明第一至第四学期成绩变化折线图',fontsize=18,fontweight='bold')

程序会自动将标题置于合适位置,但有时可能出现位置不符合预期的情况。此时可通过指定x或y属性来调整title的位置。正常范围是[0,1],可设置为负零点几或一点几,需多次尝试。若设置超出图片范围,则看不到title。\n例如这里我设置y=-0.1,可以看到title下移。

plt.title('小明第一至第四学期成绩变化折线图',fontsize=18,fontweight='bold',y=-0.1)

七、设置图例:

法一:\n在绘图时做好标注。

plt.plot(x, y[0,:],marker='o',label='语文成绩')
plt.plot(x, y[1,:],marker='*',label='数学成绩')
plt.plot(x, y[2,:],marker='x',label='英语成绩')
plt.legend(loc='upper left')

法二:\n不写在plot中,统一写在legend中。\n可指定对应曲线,定义后的曲线一定要加',',否则会报错。

a,=plt.plot(x, y[0,:],marker='o')
b,=plt.plot(x, y[1,:],marker='*')
c,=plt.plot(x, y[2,:],marker='x')
plt.legend((a,b,c),('语文成绩','数学成绩','英语成绩'),loc='upper left')

或者不指定对应曲线,

plt.legend(('语文成绩','数学成绩','英语成绩'),loc='upper left')

不指定对应曲线的方式不推荐。有时不想为每条曲线都添加图例,未写label属性的曲线本不应有图例。但该方式会按plot顺序添加图例,不会跳过未加图例的曲线,除非是最后一条曲线不写label才不会添加。\nlegend命令只能通过plt设置,若有多个子图,

ax = plt.subplot(2,1,1)

这样对plt操作即可对子图操作。

八、进行标注:

标注需编写循环逐个添加,不能直接写plt.text(x,y,"%s"%str(y)),否则不会一次性标注所有数据。\nfontsize设置标注字体。使用ax效果相同。

for i in range(len(x)):
	plt.text(x[i],y[i],"%s"%str(y[i]), fontsize=12)
	#ax.text(x[i],y[i],"%s"%str(y[i]), fontsize=12)

常出现legend遮挡图片内容的情况,此时也可指定legend的位置。

可通过bbox_to_anchor属性调整legend的位置。

plt.legend(bbox_to_anchor=(1.05, 1), loc=2)

图例还有许多其他属性,

九、保存图片:

plt.savefig('小明成绩变化图.png')

十、显示图片:

plt.show()

十一、删除边框:

这里有四个方向,可选择删除哪一个方向的边框。

ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)

十二、显示/不显示网格:

ax.grid(True)
ax.grid(False)

到此这篇关于教你学会通过python的matplotlib库绘图的文章就介绍到这了,更多相关python的matplotlib库内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表