Я пытаюсь создать цветовое колесо в Python, предпочтительно используя Matplotlib. Выполняется следующее:
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
xval = np.arange(0, 2*pi, 0.01)
yval = np.ones_like(xval)
colormap = plt.get_cmap('hsv')
norm = mpl.colors.Normalize(0.0, 2*np.pi)
ax = plt.subplot(1, 1, 1, polar=True)
ax.scatter(xval, yval, c=xval, s=300, cmap=colormap, norm=norm, linewidths=0)
ax.set_yticks([])
Однако эта попытка имеет два серьезных недостатка.
Во-первых, при сохранении результирующей фигуры в качестве вектора (figure_1.svg) цветовое колесо состоит (как и ожидалось) из 621 различных фигур, соответствующих различным (x, y) значениям. Хотя результат выглядит как круг, на самом деле это не так. Я бы предпочел использовать фактический круг, определенный несколькими точками пути и кривыми Безье между ними, как, например, matplotlib.patches.Circle
. Это мне кажется "правильным" способом сделать это, и результат будет выглядеть лучше (без полос, лучшего градиента, лучшего сглаживания).
Во-вторых (связанный), окончательные графические маркеры (последние несколько до 2*pi
) перекрывают первые несколько. Это очень сложно увидеть в рендеринге пикселей, но если вы увеличите рендеринг на основе вектора, вы можете четко видеть, что последний диск перекрывает первые несколько.
Я попытался использовать разные маркеры (.
или |
), но ни одна из них не обошла вторую проблему.
Нижняя строка: могу ли я нарисовать круг в Python/Matplotlib, который определен в правильном пути кривой вектора/Безье и который имеет цвет границы, определенный в соответствии с цветовой схемой (или, если это не так, произвольный цветовой градиент)?