Impostazione `axes.linewidth` senza cambiare il dict` rcParams` globale
-
23-09-2019 - |
Domanda
Quindi, a quanto pare non si può fare quanto segue (che genera un errore, dal momento che axes
non ha un metodo set_linewidth
):
axes_style = {'linewidth':5}
axes_rect = [0.1, 0.1, 0.9, 0.9]
axes(axes_rect, **axes_style)
e deve utilizzare il seguente vecchio trucco, invece:
rcParams['axes.linewidth'] = 5 # set the value globally
... # some code
rcdefaults() # restore [global] defaults
C'è un modo semplice / pulito (potrebbe essere uno può impostare x
- e y
- assi parametri singolarmente, ecc)?
P.S. Se no, perché?
Soluzione
La risposta di cui sopra non funziona, come è spiegato nei commenti. Suggerisco di usare spine.
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
# you can change each line separately, like:
#ax.spines['right'].set_linewidth(0.5)
# to change all, just write:
for axis in ['top','bottom','left','right']:
ax.spines[axis].set_linewidth(0.5)
plt.show()
# see more about spines at:
#http://matplotlib.org/api/spines_api.html
#http://matplotlib.org/examples/pylab_examples/multiple_yaxis_with_spines.html
Altri suggerimenti
plt.setp(ax.spines.values(), linewidth=5)
Sì, c'è un modo semplice e pulito per fare questo.
Calling ' axhline ' e ' axvline ' da un'istanza asse sembra essere la tecnica approvata nella Documentazione MPL.
In ogni caso, è semplice e ti dà il controllo a grana fine sull'aspetto degli assi.
Così, per esempio, questo codice crea una trama e colorare l'asse x verde e aumentare la larghezza della linea del asse x da un valore predefinito di "1" per un valore di "4"; l'asse y è colorato in rosso e la larghezza della linea di asse y è aumentato da "1" a "8".
from matplotlib import pyplot as PLT
fig = PLT.figure()
ax1 = fig.add_subplot(111)
ax1.axhline(linewidth=4, color="g") # inc. width of x-axis and color it green
ax1.axvline(linewidth=4, color="r") # inc. width of y-axis and color it red
PLT.show()
La funzione axhline / axvline accetta argomenti aggiuntivi che dovrebbero permettere di fare qualsiasi più o meno quello che vuoi esteticamente, in particolare, una delle proprietà ~ matplotlib.lines.Line2D sono kwargs validi (ad esempio, 'alpha', 'linestyle' , capstyle, joinstyle).