Sto provando a creare una ruota dei colori in Python, preferibilmente usando Matplotlib. I seguenti lavori: OKTracciare una ruota dei colori (polare) basata su una mappa di colori usando 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([])
Tuttavia, questo tentativo ha due gravi inconvenienti.
Innanzitutto, quando si salva la figura risultante come vettore (figure_1.svg), la ruota dei colori è composta (come previsto) di 621 forme diverse, corrispondenti ai diversi valori (x, y) che vengono tracciati. Anche se il risultato sembra un cerchio, non lo è davvero. Preferisco di gran lunga utilizzare un cerchio reale, definito da alcuni punti di percorso e curve di Bezier tra loro, come ad es. matplotlib.patches.Circle
. Questo mi sembra il modo "corretto" di farlo, e il risultato sarebbe più bello (nessuna banda, migliore sfumatura, migliore anti-aliasing).
Secondo (in modo correlato), i contrassegni di tracciamento finale (gli ultimi prima dello 2*pi
) si sovrappongono ai primi. È molto difficile vedere nel rendering dei pixel, ma se si ingrandisce il rendering basato su vettori, è possibile vedere chiaramente che l'ultimo disco si sovrappone ai primi.
Ho provato a utilizzare marcatori diversi (.
o |
), ma nessuno di essi ha risolto il secondo problema.
Linea inferiore: posso disegnare un cerchio in Python/Matplotlib che è definito nel modo corretto vettore/curva Bezier, e che ha un colore del bordo definito secondo una mappa di colori (o, in mancanza, un gradiente di colore arbitrario) ?
eccellente, ho cercato alcune cose usando 'ColorbarBase' pure, ma perse la parola chiave' orientation'. Questa soluzione è decisamente migliore della mia (dato che i "raggi" sulla ruota ora non si sovrappongono più) ma non è ancora la soluzione che volevo, dal momento che la grafica vettoriale risultante contiene ancora molti elementi di percorso separati piuttosto che un singolo Bezier Cerchio Grazie mille comunque; se nessuno arriva con la soluzione * true *, segnerò la tua risposta come accettata :) – EelkeSpaak
Ahh - Capisco cosa intendi. Ci penserò su questo - mi spiace non aver letto abbastanza attentamente la domanda) –
Un paio di pensieri ho ricordato che le curve di bezier non possono effettivamente produrre un cerchio perfetto: [questa risposta] (http: // stackoverflow. it/a/13338311/838992) sembra confermarlo. Penso anche che per matplotlib, 1 elemento = 1 colore. Quindi, dove vediamo i gradienti, stiamo effettivamente vedendo molti piccoli elementi ben confezionati. [Un'altra risposta sulle linee di colorazione con sfumature] (http://stackoverflow.com/a/8505774/838992) sembrerebbe sostenere questa visione. Gli elementi potrebbero essere molti piccoli segmenti Bezier, ma penso che otterrete ancora una quantizzazione visibile. Forse qualcuno verrà e dimostrerà che mi sbaglio :) –