python - font - Configurando `axes.linewidth` sin cambiar el dictado global de` rcParams`
plt rc font size (3)
Entonces, parece que uno no puede hacer lo siguiente (genera un error, ya que los axes
no tienen un método set_linewidth
):
axes_style = {''linewidth'':5}
axes_rect = [0.1, 0.1, 0.9, 0.9]
axes(axes_rect, **axes_style)
y tiene que usar el siguiente viejo truco en su lugar:
rcParams[''axes.linewidth''] = 5 # set the value globally
... # some code
rcdefaults() # restore [global] defaults
¿Hay una forma fácil / limpia (puede ser que uno pueda configurar los parámetros de los ejes x
e y
individualmente, etc.)?
PS Si no, ¿por qué?
La respuesta anterior no funciona, como se explica en los comentarios. Sugiero usar espinas.
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
Sí, hay una manera fácil y limpia de hacer esto.
Llamar '' axhline '' y '' axvline '' desde una instancia de eje parece ser la técnica respaldada en la Documentación MPL.
En cualquier caso, es simple y le da un control preciso sobre la apariencia de los ejes.
Entonces, por ejemplo, este código creará una gráfica y coloreará el eje x verde y aumentará el ancho de línea del eje x desde un valor predeterminado de "1" hasta un valor de "4"; el eje y está coloreado de rojo y el ancho de línea del eje y se incrementa de "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 función axhline / axvline acepta argumentos adicionales que deberían permitirte hacer lo que quieras estéticamente, en particular cualquiera de las propiedades ~ matplotlib.lines.Line2D son kwargs válidos (por ejemplo, ''alpha'', ''linestyle'', capstyle, joinstyle).
plt.setp(ax.spines.values(), linewidth=5)