今天我们在昨天的基础上,深入学习 Matplotlib 的绘图标记(Marker) —— 也就是数据点上那些小符号。标记虽小,却是让图表更清晰、更专业的关键细节。一、什么是绘图标记?
标记(Marker)就是数据点上的符号,用来标识每个数据点的位置。比如折线图上的圆点、散点图上的星星等。基础用法
import matplotlib.pyplot as pltimport numpy as npypoints = np.array([1, 3, 4, 5, 8, 9, 6, 1, 3, 4, 5, 2, 4])# 使用实心圆标记plt.plot(ypoints, marker='o')plt.show()
二、标记符号大全
| | |
|---|
. | | |
, | | |
o | | |
v | | |
^ | | |
< | | |
> | | |
1 | | |
2 | | |
3 | | |
4 | | |
8 | | |
s | | |
p | | |
P | | |
* | | |
h | | |
H | | |
+ | | |
x | | |
X | | |
D | | |
d | | |
| | | |
_ | | |
None | | |
特殊标记(使用 matplotlib.markers 常量)
import matplotlib.markers# 使用箭头标记plt.plot([1, 2, 3], marker=matplotlib.markers.CARETDOWNBASE)
| |
|---|
CARETLEFT | |
CARETRIGHT | |
CARETUP | |
CARETDOWN | |
CARETLEFTBASE | |
CARETRIGHTBASE | |
CARETUPBASE | |
CARETDOWNBASE | |
自定义字符标记
import matplotlib.markers# 用字母 f 作为标记plt.plot([1, 2, 3, 4], marker='$f$')
三、fmt 参数:一行代码搞定样式
fmt 是格式字符串,格式为:[标记][线条样式][颜色]ypoints = np.array([6, 2, 13, 10])# o: 实心圆标记,: 虚线,r: 红色plt.plot(ypoints, 'o:r')plt.show()
线条样式
颜色标记
四、标记大小与颜色
标记大小(ms / markersize)
ypoints = np.array([6, 2, 13, 10])# 标记大小设为 20plt.plot(ypoints, marker='o', ms=20)plt.show()
标记边框颜色(mec / markeredgecolor)
# 红色边框plt.plot(ypoints, marker='o', ms=20, mec='r')plt.show()
标记填充颜色(mfc / markerfacecolor)
# 黄色填充,红色边框plt.plot(ypoints, marker='o', ms=20, mec='r', mfc='y')plt.show()
五、综合实战示例
示例 1:不同标记对比
import matplotlib.pyplot as pltimport numpy as npx = np.arange(5)y = [10, 25, 15, 30, 20]markers = ['o', 's', '^', 'D', '*']colors = ['red', 'blue', 'green', 'orange', 'purple']labels = ['圆形', '方形', '三角', '菱形', '星号']plt.figure(figsize=(10, 6))for i, (m, c, l) in enumerate(zip(markers, colors, labels)): plt.plot(x, [v + i*3 for v in y], marker=m, color=c, ms=12, label=l, linewidth=2)plt.title('不同标记样式对比', fontsize=16)plt.xlabel('X 轴')plt.ylabel('Y 轴')plt.legend()plt.grid(True, alpha=0.3)plt.show()
示例 2:带标记的折线图(美化版)
import matplotlib.pyplot as pltimport numpy as np# 设置中文字体plt.rcParams['font.sans-serif'] = [ 'Microsoft YaHei', 'SimHei', 'PingFang SC', 'Noto Sans CJK SC', 'WenQuanYi Zen Hei']plt.rcParams['axes.unicode_minus'] = Falsemonths = ['1月', '2月', '3月', '4月', '5月', '6月']sales = [120, 135, 148, 162, 155, 178]plt.figure(figsize=(10, 6))plt.plot( months, sales, marker='o', ms=12, mec='red', mfc='lightblue', color='navy', linewidth=2.5, label='销售额')for i, v in enumerate(sales): plt.text(i, v + 5, f'{v}万', ha='center', fontsize=10, color='darkred')plt.title('2026年上半年销售额趋势', fontsize=16, fontweight='bold')plt.xlabel('月份', fontsize=12)plt.ylabel('销售额(万元)', fontsize=12)plt.legend()plt.grid(True, alpha=0.3, linestyle='--')plt.ylim(100, 200)plt.show()
示例 3:只显示标记,不画线
x = np.random.rand(20)y = np.random.rand(20)plt.figure(figsize=(8, 8))plt.plot(x, y, 'ro', ms=10) # 'ro' = 红色实心圆,无线条plt.title('散点图(使用 plot + marker)')plt.show()
六、常用参数
| | |
|---|
marker | | |
markersize | ms | |
markerfacecolor | mfc | |
markeredgecolor | mec | |
markeredgewidth | mew | |
linestyle | ls | |
linewidth | lw | |
color | c | |
总结
今天我们学习了 Matplotlib 的绘图标记:
✅ 标记符号:30+ 种内置标记,包括几何图形、箭头、自定义字符
✅ fmt 参数:[标记][线条][颜色] 一行搞定样式
✅ 标记美化:大小(ms)、边框色(mec)、填充色(mfc)
✅ 实战技巧:标记+数值标签、只显示标记不画线
关键记忆点:marker 控制形状,ms 控制大小,mec 控制边框,mfc 控制填充。