最简折线图只需传入等长x、y数组调用plt.plot(x, y);常见错误是长度不一致或pandas.series索引被误作x轴;多线用plt.plot(x,y1,x,y2);脚本中需plt.show()且置于末尾;fmt参数顺序为“线型-标记-颜色”。

怎么用 plt.plot() 画最简折线图
一句话:传入两个等长数组,x 和 y,plt.plot(x, y) 就能出图。别急着加标题、网格、颜色——先让线出来。
常见错误现象:ValueError: x and y must have same first dimension,本质是传进来的 x 和 y 长度不一致,比如用 range(5) 对应 [1, 2, 3];或者一维数组被误写成二维(如 y.reshape(-1, 1))。
- 用
len(x) == len(y)快速验证,别靠肉眼数 - 如果
y来自pandas.Series,注意它自带索引,直接传会把索引当x;显式用y.values或y.to_numpy() - 想画多条线?一次传多个
y数组:plt.plot(x, y1, x, y2),别套循环反复调plt.plot()
为什么 plt.show() 有时不显示图像
不是代码错了,是执行环境没触发渲染。Jupyter 默认自动显示,但脚本运行(python script.py)必须手动调 plt.show(),且它要放在所有 plt.plot() 之后。
容易踩的坑:plt.show() 调用后,当前 figure 就被清空了;再调 plt.plot() 会新建一个 figure,而不是在原图上叠加——这不是 bug,是设计如此。
- 调试时想看中间结果?用
plt.gcf().canvas.draw()+plt.show(block=False)强制刷新,但慎用,容易卡住 - 导出图片却没显示?把
plt.show()注释掉,改用plt.savefig("plot.png"),顺序不能反 - PyCharm 中图弹窗卡住?检查设置里是否启用了「SciView」,关掉它,改用外部窗口或保存为文件
plt.plot() 的 fmt 参数怎么记牢
格式字符串(如 "ro-")比一堆关键字参数快,也更常用。它按顺序控制三件事:线型、标记、颜色——顺序固定,但可以缺省。
图片提示词生成器?不止如此。 马甲系统 —— 把脑海中的画面,翻译成AI能理解的专业表达。 用得越多,它越懂你:首次需要多问几句确认方向,用久了几乎一说就懂。 用得越多,它越快:缓存机制让后续对话越来越省。 RAG进化:成功案例持续入库,越跑越聪明。 输入「新手指南」查看完整功能介绍
别死记硬背,记住口诀:“线先标后色,缺啥补啥”。"-o" 是实线+圆点,"r" 是红,合起来 "-or" 和 "ro-" 效果一样;但 "or-" 就错,因为 "o" 被当成了线型(Matplotlib 不认识)。
- 线型优先级最高:
"-"(实线)、"--"(虚线)、":"(点线) - 标记次之:
"o"(圆)、"s"(方)、"^"(三角),不写就不画标记 - 颜色最后:
"r"(红)、"b"(蓝)、"k"(黑),也可用"#FF5733"十六进制 - 想加标记又不想连线?写成
"o"或"ro",不带线型符号
中文标签显示为方块怎么办
不是字体缺失,是 Matplotlib 默认不支持中文字体。临时方案是全局设字体,但要注意路径和兼容性。
Windows 上用 "SimHei"、macOS 用 "Arial Unicode MS"、Linux 常用 "Noto Sans CJK SC",但硬写名字容易在别处崩。更稳的做法是查系统里已有的中文字体:
import matplotlib.font_manager as fm fonts = [f.name for f in fm.fontManager.ttflist] print([f for f in fonts if 'sim' in f.lower() or 'hei' in f.lower() or 'song' in f.lower()])
- 设完字体后,必须重载
fm._rebuild()(某些旧版本需要),否则不生效 - 用
plt.rcParams['axes.unicode_minus'] = False解决负号变方块问题,这是连带症状 - 导出 PDF 时中文乱码?换
plt.savefig(..., bbox_inches='tight', format='pdf')并确保字体嵌入,但更简单的是导出为 SVG
字体设置是一次性动作,放在绘图代码最前就行,别每个图都重复设。真要跨环境部署,建议统一用英文标签,配图注说明。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










