Ответ 1
Я представляю два пути. Во-первых, он прокручивается и выполняет все маркеры, а затем сбрасывает цвета и снова контуров, а также линии. Второй, вероятно, более чистый: он циклически проходит один раз и внутри каждого цикла получает следующий цвет, а затем выполняет две команды построения графика с этим цветом.
первый метод
Если вы не хотите отправлять цвет в качестве аргумента, вы можете reset цикл цвета и дважды пройти цикл. Здесь я reset это перед первым циклом, а затем снова перед вторым циклом, чтобы убедиться, что он начинается с того же места.
import numpy as np
import itertools
import matplotlib.pyplot as plt
m = 5
n = 5
x = np.zeros(shape=(m, n))
plt.figure(figsize=(5.15, 5.15))
plt.clf()
plt.subplot(111)
marker = itertools.cycle(('o', 'v', '^', '<', '>', 's', '8', 'p'))
plt.gca().set_color_cycle(None)
for i in range(1, n):
x = np.dot(i, [1, 1.1, 1.2, 1.3])
y = x ** 2
plt.plot(x, y, linestyle='', markeredgecolor='none', marker=marker.next())
plt.gca().set_color_cycle(None)
for i in range(1, n):
x = np.dot(i, [1, 1.1, 1.2, 1.3])
y = x ** 2
plt.plot(x, y, linestyle='-')
plt.ylabel(r'$y$', labelpad=6)
plt.xlabel(r'$x$', labelpad=6)
plt.savefig('test.png')
ВТОРАЯ ОПЦИЯ
Прямой доступ к цветовому циклу с помощью color=next(ax._get_lines.prop_cycler)['color']
:
import numpy as np
import itertools
import matplotlib.pyplot as plt
m = 5
n = 5
x = np.zeros(shape=(m, n))
plt.figure(figsize=(5.15, 5.15))
plt.clf()
plt.subplot(111)
marker = itertools.cycle(('o', 'v', '^', '<', '>', 's', '8', 'p'))
ax = plt.gca()
for i in range(1, n):
x = np.dot(i, [1, 1.1, 1.2, 1.3])
y = x ** 2
#
#for matplotlib before 1.5, use
#color = next(ax._get_lines.color_cycle)
#instead of next line (thanks to Jon Loveday for the update)
#
color = next(ax._get_lines.prop_cycler)['color']
plt.plot(x, y, linestyle='', markeredgecolor='none', marker=marker.next(), color=color)
plt.plot(x, y, linestyle='-', color = color)
plt.ylabel(r'$y$', labelpad=6)
plt.xlabel(r'$x$', labelpad=6)
plt.savefig('test2.png')
Также обратите внимание, что я изменил ваш \textit{y}
на $y$
. Обычно вы действительно хотите использовать математические шрифты, а не курсив.