Скаттер не проходит через Cycler - PullRequest
0 голосов
/ 15 мая 2019

Я хотел бы иметь возможность использовать метод Cycler для matplotlib, используя график рассеяния.Тем не менее, кажется, что метод разброса не циклический, в то время как, например, метод построения графика.См. MWE ниже

import numpy as np
from cycler import cycler
import matplotlib.pyplot as plt
x = np.random.rand(5,10)
y = np.random.rand(5,10)

color = plt.cm.viridis(np.linspace(0, 1,x.shape[0]))
custom_cycler = (cycler(color=color) *
  cycler(marker=['o', 's']))
fig,ax = plt.subplots()
ax.set_prop_cycle(custom_cycler)
ax.scatter(x,y)
fig,ax2 = plt.subplots()
ax2.plot(x,y)

разброс не меняет цвет, тогда как график

scatter plot

Очевидно, это было обсуждено , но я не понимаю, что я должен делать, чтобы достичь того, чего я желаю в разбросе, т.е. возможности циклически перемещаться как на маркере, так и на цвете с использованием элегантной методики циклирования

1 Ответ

0 голосов
/ 15 мая 2019

Вы можете отдельно создать циклер для цвета и маркера, как это частично предложено в указанной вами ссылке.

import numpy as np; np.random.seed(123)
import itertools
from cycler import cycler
import matplotlib.pyplot as plt

x = np.random.rand(5,10)
y = np.random.rand(5,10)

color = plt.cm.viridis(np.linspace(0, 1,x.shape[0]))
custom_cycler = (cycler(color=color))
marker = itertools.cycle(('o', 's')) 

fig,ax = plt.subplots()
ax.set_prop_cycle(custom_cycler)

for i, j in zip(x, y):
    ax.plot(i, j, linestyle='', marker=next(marker) )

enter image description here

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