在 Matplotlib 中为线上的单个点设置标记
·
回答问题
我使用 Matplotlib 在图形上绘制线条。现在我想为线上的各个点设置样式,特别是标记。我该怎么做呢?
为了澄清我的问题,我希望能够为一行上的单个标记设置样式,而不是所述行上的每个标记。
Answers
在对plot的调用中指定关键字 argslinestyle和/或marker。
例如,使用虚线和蓝色圆圈标记:
plt.plot(range(10), linestyle='--', marker='o', color='b', label='line with marker')
plt.legend()
对同一件事的快捷调用:
plt.plot(range(10), '--bo', label='line with marker')
plt.legend()

以下是可能的线条和标记样式的列表:
================ ===============================
character description
================ ===============================
- solid line style
-- dashed line style
-. dash-dot line style
: dotted line style
. point marker
, pixel marker
o circle marker
v triangle_down marker
^ triangle_up marker
< triangle_left marker
> triangle_right marker
1 tri_down marker
2 tri_up marker
3 tri_left marker
4 tri_right marker
s square marker
p pentagon marker
* star marker
h hexagon1 marker
H hexagon2 marker
+ plus marker
x x marker
D diamond marker
d thin_diamond marker
| vline marker
_ hline marker
================ ===============================
edit: 带有标记任意点子集的示例,如评论中所要求的:
import numpy as np
import matplotlib.pyplot as plt
xs = np.linspace(-np.pi, np.pi, 30)
ys = np.sin(xs)
markers_on = [12, 17, 18, 19]
plt.plot(xs, ys, '-gD', markevery=markers_on, label='line with select markers')
plt.legend()
plt.show()

由于合并了这个特性分支,因此使用markeverykwarg 的最后一个示例在 1.4+ 中是可能的。如果您卡在较旧版本的 matplotlib 上,您仍然可以通过在折线图上叠加散点图来获得结果。有关详细信息,请参阅编辑历史。
更多推荐

所有评论(0)