Questa è davvero una questione di gusti, e anche una questione di pubblico di destinazione. matplotlib
prova a produrre illustrazioni chiare per scopi scientifici. Questo è - necessariamente - un compromesso e le illustrazioni non sono qualcosa che dovresti stampare su una rivista o mostrare in una pubblicità.
Ci sono alcune buone notizie e alcune cattive notizie su matplotlib
in questo senso.
Cattive notizie:
- Non esiste un unico comando di magico o di un pacchetto che creerebbe belle trame con
matplotlib
.
Buone notizie:
- ci sono modi semplici per cambiare le impostazioni di default, vedi: http://matplotlib.org/users/customizing.html
- Il modello di oggetti consente all'utente di cambiare quasi tutto e introdurre nuove funzionalità complesse.
- Il codice sorgente è disponibile e persino può essere modificato facilmente dall'utente.
Secondo me la cosa più difficile è decidere quello che vuoi. Quindi fare quello che vuoi è più facile, anche se all'inizio c'è una curva di apprendimento molto ripida.
A titolo di esempio:
import numpy as np
import matplotlib.pyplot as plt
# create some fictive access data by hour
xdata = np.arange(25)
ydata = np.random.randint(10, 20, 25)
ydata[24] = ydata[0]
# let us make a simple graph
fig = plt.figure(figsize=[7,5])
ax = plt.subplot(111)
l = ax.fill_between(xdata, ydata)
# set the basic properties
ax.set_xlabel('Time of posting (US EST)')
ax.set_ylabel('Percentage of Frontpaged Submissions')
ax.set_title('Likelihood of Reaching the Frontpage')
# set the limits
ax.set_xlim(0, 24)
ax.set_ylim(6, 24)
# set the grid on
ax.grid('on')
(Solo un commento: I limiti di asse X nell'immagine originale non prendono la ciclicità dei dati in considerazione.)
Questo ci darà qualcosa di simile:
E 'facile capire che abbiamo bisogno di fare un sacco di modifiche al fine di essere in grado di mostrare questo a un pubblico meno ingegneristico. Almeno:
- rendere il riempimento offensive trasparente e meno colore
- rendono la linea più spessa
- cambiare il colore della linea
- aggiungere altre zecche all'asse X
- cambiamento fonti del titoli
# change the fill into a blueish color with opacity .3
l.set_facecolors([[.5,.5,.8,.3]])
# change the edge color (bluish and transparentish) and thickness
l.set_edgecolors([[0, 0, .5, .3]])
l.set_linewidths([3])
# add more ticks
ax.set_xticks(np.arange(25))
# remove tick marks
ax.xaxis.set_tick_params(size=0)
ax.yaxis.set_tick_params(size=0)
# change the color of the top and right spines to opaque gray
ax.spines['right'].set_color((.8,.8,.8))
ax.spines['top'].set_color((.8,.8,.8))
# tweak the axis labels
xlab = ax.xaxis.get_label()
ylab = ax.yaxis.get_label()
xlab.set_style('italic')
xlab.set_size(10)
ylab.set_style('italic')
ylab.set_size(10)
# tweak the title
ttl = ax.title
ttl.set_weight('bold')
Ora abbiamo:
Questo non è esattamente come nella questione, ma tutto può essere sintonizzato verso quella direzione. Molte delle cose impostate qui possono essere impostate come predefinite per matplotlib
. Forse questo dà un'idea di come cambiare le cose nelle trame.
Non direi quello inferiore professionalmente fatto. Sembra qualcosa uscito da excel. – tacaswell