Если вы хотите иметь различные маркеры для различных групп данных (цвета автоматически циклическое по matplotlib
):
import numpy as np
import matplotlib.pyplot as plt
markers = ['o', #'circle',
'v', #'triangle_down',
'^', #'triangle_up',
'<', #'triangle_left',
'>', #'triangle_right',
'1', #'tri_down',
'2', #'tri_up',
'3', #'tri_left',
'4', #'tri_right',
'8', #'octagon',
's', #'square',
'p', #'pentagon',
'h', #'hexagon1',
'H', #'hexagon2',
'D', #'diamond',
'd', #'thin_diamond'
]
n_markers = len(markers)
a = [10.*np.random.random(int(np.random.random()*10)) for i in xrange(n_markers)]
fig = plt.figure()
ax = fig.add_subplot(111)
for i, data in enumerate(a):
xs = data.shape[0]*[i,] # makes the abscissas list
marker = markers[i % n_markers] # picks a valid marker
ax.plot(xs, data, marker, label='data %d, %s'%(i, marker))
ax.set_xlim(-1, 1.4*len(a))
ax.set_ylim(0, 10)
ax.legend(loc=None)
fig.tight_layout()
Обратите внимание на пределы y
, жестко закодированы, соответственно изменяются. 1.4*len(a)
предназначен для того, чтобы оставлять место в правой части графика для легенды.
В приведенном выше примере не имеет никакого смысла в x=0
(будет темно-синие кружки) как рандомизированы размер для его набора данных равен нулю, но вы можете легко поместить +1
, если вы не хотите использовать x=0
.
Не совсем. Мне нужны последние два элемента: 48 и 55, которые должны быть связаны с одной и той же абсиссой (тот же x) в этом случае. 4. –
Если вы хотите создать отдельную строку, я изменил код выше. Не совсем уверен, что вы пытаетесь построить, но выше будет –
Это работает, но для получения 'xs = [1, 2, 4, 4]' в соответствии с запросом вам нужно использовать '[[i + 1] * len (x1) для i, x1 в перечислении (x)] '. (в настоящее время он дает '[0, 1, 3, 3]') – tom