matplotlib: установка маркеров для отдельных точек на линии
Я использовал matplotlib для построения линий на фигуре. Теперь я хотел бы установить стиль, в частности маркер, для отдельных точек на линии. Как мне это сделать?
изменить:
чтобы прояснить мой вопрос, на который был дан ответ, я хочу иметь возможность установить стиль для отдельных маркеров на линии, а не для каждого маркера на указанной линии.
3 ответов:
укажите ключевое слово args
linestyleи/илиmarkerв вызовеplot.например, используя пунктирную линию и синие маркеры круга:
plt.plot(range(10), linestyle='--', marker='o', color='b')ярлык вызова для того же самого:
plt.plot(range(10), '--bo')
вот список возможных стилей линий и маркеров:
================ =============================== 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) plt.show()пример использования
markeverykwarg можно в Начиная с 1.4+, из-за слияния эта функция филиала. Если вы застряли на более старой версии matplotlib, вы все равно можете достичь результата, наложив диаграмму рассеяния на линейный график. Смотрите редактировать история для более подробной информации.
есть изображение показать имя и описание всех маркеров, я надеюсь, что это поможет вам.
import matplotlib.pylab as plt markers=['.',',','o','v','^','<','>','1','2','3','4','8','s','p','P','*','h','H','+','x','X','D','d','|','_'] descriptions=['point', 'pixel', 'circle', 'triangle_down', 'triangle_up','triangle_left', 'triangle_right', 'tri_down', 'tri_up', 'tri_left','tri_right', 'octagon', 'square', 'pentagon', 'plus (filled)','star', 'hexagon1', 'hexagon2', 'plus', 'x', 'x (filled)','diamond', 'thin_diamond', 'vline', 'hline'] x=[] y=[] for i in range(5): for j in range(5): x.append(i) y.append(j) plt.figure() for i,j,m,l in zip(x,y,markers,descriptions): plt.scatter(i,j,marker=m) plt.text(i-0.15,j+0.15,s=m+' : '+l) plt.axis([-0.1,4.8,-0.1,4.5]) plt.tight_layout() plt.axis('off') plt.show()
для дальнейшего использования-the
Line2Dхудожник вернулся кplot()такжеset_markevery()метод, который позволяет устанавливать маркеры только на определенные точки-см. https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D.set_markevery



Comments