matplotlib: установить маркеры для отдельных точек на линии

Я использовал matplotlib для построения линий на фигуре. Теперь я хотел бы установить стиль, в частности маркер, для отдельных точек на линии. Как мне это сделать?

Изменить: чтобы прояснить мой вопрос, на который был дан ответ, я хочу иметь возможность устанавливать стиль для отдельных маркеров в строке, а не каждый маркер на указанной строке.

Укажите ключевое слово args linestyle и / или marker в вашем вызове.

Например, используя пунктирную линию и маркеры синего круга:

 plt.plot(range(10), linestyle='--', marker='o', color='b') 

Быстрый вызов для одного и того же:

 plt.plot(range(10), '--bo') 

example1

Вот список возможных стилей линий и маркеров:

 ================ =============================== 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 xx 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) plt.show() 

example2

Этот последний пример с использованием markevery kwarg возможен с 1.4+ из-за слияния этой ветки признаков . Если вы застряли в более старой версии matplotlib, вы все равно можете достичь результата, наложив диаграмму рассеяния на график линии. Дополнительную информацию см. В истории изменений .

Для справки в будущем – художник Line2D возвращаемый plot() также имеет метод set_markevery() который позволяет вам устанавливать только определенные маркеры в определенных точках – см. http://matplotlib.sourceforge.net/api/artist_api.html#matplotlib.lines .Line2D.set_marker