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



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



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

2392   3  

3 ответов:

укажите ключевое слово args linestyle и/или marker в вызове plot.

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

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
   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()

example2

пример использования markevery kwarg можно в Начиная с 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()  

example1Нажмите здесь, чтобы посмотреть картинку

для дальнейшего использования-the Line2D художник вернулся к plot() также set_markevery() метод, который позволяет устанавливать маркеры только на определенные точки-см. https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D.set_markevery

Comments

    Ничего не найдено.