笔记
单击此处 下载完整的示例代码
Markevery 演示#
的markevery
属性Line2D
允许在数据点的子集上绘制标记。
可能的参数列表在 中指定Line2D.set_markevery
。简而言之:
单个整数 N 绘制每个第 N 个标记。
一个整数元组 (start, N) 绘制每个第 N 个标记,从数据索引start 开始。
整数列表在指定索引处绘制标记。
切片在切片索引处绘制标记。
浮点数将标记之间的距离指定为屏幕空间中轴对角线的一部分。这将导致沿线的点在视觉上均匀分布,而与比例和缩放无关。
带有线性刻度的标记#
带有对数刻度的标记#
请注意,当使用整数对数据进行二次采样时,对数刻度会导致标记距离的视觉不对称。相反,对图形大小的分数进行二次采样会创建均匀分布,因为它基于轴对角线的分数,而不是数据坐标或数据索引。
fig, axs = plt.subplots(3, 3, figsize=(10, 6), constrained_layout=True)
for ax, markevery in zip(axs.flat, cases):
ax.set_title(f'markevery={markevery}')
ax.set_xscale('log')
ax.set_yscale('log')
ax.plot(x, y, 'o', ls='-', ms=4, markevery=markevery)
缩放图上的 markevery #
基于整数的markevery规范从基础数据中选择点并且独立于视图。相反,基于浮点的规范与轴对角线相关。虽然缩放不会改变 Axes 对角线,但它会改变显示的数据范围,并且缩放时会显示更多的点。
fig, axs = plt.subplots(3, 3, figsize=(10, 6), constrained_layout=True)
for ax, markevery in zip(axs.flat, cases):
ax.set_title(f'markevery={markevery}')
ax.plot(x, y, 'o', ls='-', ms=4, markevery=markevery)
ax.set_xlim((6, 6.7))
ax.set_ylim((1.1, 1.7))
极地图上的markevery
r = np.linspace(0, 3.0, 200)
theta = 2 * np.pi * r
fig, axs = plt.subplots(3, 3, figsize=(10, 6), constrained_layout=True,
subplot_kw={'projection': 'polar'})
for ax, markevery in zip(axs.flat, cases):
ax.set_title(f'markevery={markevery}')
ax.plot(theta, r, 'o', ls='-', ms=4, markevery=markevery)
plt.show()
脚本总运行时间:(0分10.927秒)