Я пытаюсь создать серию диаграмм рассеяния с квадратными и незаполненными маркерами для каждой точки данных, с разными, но детерминированными цветами маркеров между прогонами, для каждого массива.Для этого я попытался использовать следующий код:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([1,2,3,4,5,6,7,8,9,10])
plt.scatter(x, x**2, s=50, marker='s',facecolors='none')
plt.scatter(x, x**3, s=50, marker='s',facecolors='none')
plt.scatter(x, x**4, s=50, marker='s',facecolors='none')
, который заполняет квадратные маркеры, но не оставляет краев маркера, поэтому на самом деле никакого вывода не видно.Если я вместо этого использую
plt.scatter(x, x**2, s=50, marker='s',facecolors='none',edgecolors='r')
plt.scatter(x, x**3, s=50, marker='s',facecolors='none',edgecolors='g')
plt.scatter(x, x**4, s=50, marker='s',facecolors='none',edgecolors='b')
, тогда я действительно вижу серию графиков данных, представленных незаполненными красными квадратами, но недостатком является то, что я должен явно установить, какой цвет я хочу, используя edgecolor
.Тем не менее, поскольку мои фактические данные будут состоять из переменного числа массивов, причем фактическое число неизвестно до времени выполнения, я рассчитываю построить каждый ряд данных на одной и той же диаграмме разброса и разными цветами, но без необходимости явно указывать, чтоцвета для использования.Я мог бы использовать
plt.scatter(x, y, s=50, marker='s',facecolors='none',edgecolor=np.random.rand(3,))
, как я видел, ответил на это SO, но это не идеально, так как я надеюсь иметь детерминированные цвета между прогонами.Так, например, если у меня есть 3 массива, то первый построенный массив всегда имеет цвет 'x', второй всегда цвет 'y', а третий всегда цвет 'z'.Расширяя это до n
массивов, построенный массив nth
также всегда будет одного цвета (где n
может быть очень большим).
Например, если мы рассмотрим простой график с использованием закрашенных цветовмы видим, что первые 3 графика всегда одинакового цвета (синий, оранжевый, зеленый), и даже при добавлении 4-го графика первые 3 графика сохраняют свои исходные цвета.
3 графика,со стандартными цветами пиплота
4 графика, при этом исходные 3 графика сохраняют свои исходные цвета, как на первом изображении выше
РЕДАКТИРОВАТЬ:Кто-нибудь знает причину отсутствия edgefaces
(что позволило бы нам легко использовать цвета пиплота по умолчанию) при установке facecolors='none'
?Это кажется довольно странным выбором дизайна.