Quindi i tuoi requisiti sono "molti colori" e "non ci sono due colori che devono essere associati allo stesso valore di scala di grigi quando stampati", giusto? Il secondo criterio dovrebbe essere soddisfatto da eventuali mappe "sequenziali" (che aumentano o diminuiscono monoticamente in luminanza). Penso di tutte le scelte in matplotlib, si sono lasciati con cubehelix
(già citato), gnuplot
, e gnuplot2
:
La linea bianca è la luminanza di ogni colore, in modo da poter vedere che ogni il colore verrà mappato su un valore di scala di grigi diverso durante la stampa. La linea nera è tonalità, mostrando che attraversano una varietà di colori.
Nota che cubehelix è in realtà una funzione (from matplotlib._cm import cubehelix
) ed è possibile regolare i parametri dell'elica per produrre colori più variabili, as shown here. In altre parole, cubehelix non è una mappa dei colori, è una famiglia di mappe di colori. Qui ci sono 2 varianti:
Per i colori meno selvaggiamente-variabili (più piacevole per molte cose, ma forse non per i vostri grafici a barre), magari provare le mappe 3-colore ColorBrewer, YlOrRd
, PuBuGn
, YlGnBu
:
https://www.flickr.com/photos/omegatron/7298887952/
Tuttavia, non è consigliabile utilizzare solo questo colore per identificare i grafici a barre. Dovresti sempre utilizzare le etichette di testo come identificatore principale. Si noti inoltre che alcuni di questi producono barre bianche che completamente si fondono con lo sfondo, in quanto sono destinati heatmaps, non chart colori:
from matplotlib import pyplot as plt
import pandas, numpy as np # I find np.random.randint to be better
# Make the data
x = [{i:np.random.randint(1,5)} for i in range(10)]
df = pandas.DataFrame(x)
# Make a list by cycling through the colors you care about
# to match the length of your data.
cmap = plt.get_cmap('cubehelix')
indices = np.linspace(0, cmap.N, len(x))
my_colors = [cmap(int(i)) for i in indices]
# Specify this list of colors as the `color` option to `plot`.
df.plot(kind='bar', stacked=True, color=my_colors)
E questi sono i nuovi ragazzi:
sguardo 'cubehelix' – tacaswell
Cubehelix è impressionante. Ho letto il giornale di Dave Green. Esattamente quello che volevo. Ho ottenuto un aspetto eccellente e grafici di stampa al primo tentativo. Se il tuo commento fosse una risposta lo accetterei. – vkontori
aggiunto come risposta – tacaswell