Estoy usando python + matplotlib y estoy teniendo dos parcelas compartiendo un eje. Si intenta establecer graph1.set_xticklabels([])
mientras comparte un eje, no tiene ningún efecto porque se comparte. ¿Hay alguna manera de compartir el eje Y poder ocultar el eje x de un gráfico?matplotlib comparte eje x pero no muestra etiquetas de eje x para ambos, solo uno
Respuesta
Esto es un error común al usar ejes compartidos.
Afortunadamente, hay una solución simple: use plt.setp(ax.get_xticklabels(), visible=False)
para hacer que las etiquetas sean invisibles en un solo eje.
Esto es equivalente a [label.set_visible(False) for label in ax.get_xticklabels()]
, para lo que sea que valga la pena. setp
operará automáticamente en un iterable de objetos matplotlib, así como objetos individuales.
A modo de ejemplo:
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)
ax1.plot(range(10), 'b-')
ax2 = fig.add_subplot(2,1,2, sharex=ax1)
ax2.plot(range(10), 'r-')
plt.setp(ax1.get_xticklabels(), visible=False)
plt.show()
por un hilo en matplotlib-users, podría utilizar
import matplotlib.pyplot as plt
for ax in plt.gcf().axes:
try:
ax.label_outer()
except:
pass
Me gustaría poder votar esto más, porque es mucho más útil que la respuesta aceptada. La única situación en la que desea modificar la visibilidad en lugar de simplemente eliminarlos es en las subtramas; y tu respuesta es mucho más inteligente en ese caso. ¡Gracias! –
¿Por qué 'try' es necesario? Parece bien sin eso. –
'try' es necesario porque no se garantiza que todos los elementos de la lista' plt.gcf(). Axes' sean 'subplot' (con un método' label_outer'). – esmit
Puede compartir los ejes durante la creación trama secundaria con plt.subplots
como
fig, axes = plt.subplots(nrows=2, sharex=True)
Esto desactivará automáticamente las etiquetas de los ejes interiores.
Ejemplo completo:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, sharex=True)
axes[0].plot([1,2,3])
axes[1].plot([3,2,1])
plt.show()
pero si intenta mover las garrapatas al otro lado de la trama, las etiquetas vuelven a aparecer:/ – endolith
Sí cierto, en ese caso especial necesita volver a hacerlas invisibles. – ImportanceOfBeingErnest
'label_outer()' parece funcionar https://stackoverflow.com/a/12751192/125507 – endolith
- 1. Personalice el eje x en matplotlib
- 2. cadenas matplotlib como etiquetas en el eje x
- 3. matplotlib: Creando dos subparcelas (apiladas) con eje X COMPARTIDO pero con valores SEPARADOS del eje Y
- 4. Gnuplot resolución eje x
- 5. Girar una UIView en su eje X (eje horizontal)
- 6. matlab múltiple x eje uno debajo de otro
- 7. Añadir nota al pie debajo del eje x usando matplotlib
- 8. Highcharts establecen categorías eje x
- 9. Cómo configurar etiquetas de fecha y hora en el eje x, solo para puntos determinados en matplotlib
- 10. Cómo agregar un segundo eje x en matplotlib
- 11. Highcharts: muestra cada otra categoría de eje x
- 12. eje y garrapatas etiqueta y la etiqueta del eje x garrapata en matplotlib
- 13. Subtramas con fechas en el eje x
- 14. Estableciendo un eje en matplotlib
- 15. Flot con el eje x de "Cadena"
- 16. Parcela con datos no numéricos en el eje x
- 17. En matplotlib, ¿cómo se muestra un eje en ambos lados de la figura?
- 18. Matplotlib gráfico de barras eje x no trazará valores de cadena
- 19. Ocultar etiquetas de eje
- 20. ¿Cómo creo un eje x correctamente escalado?
- 21. R: eje x múltiple con anotaciones
- 22. gráfico con texto personalizado para los puntos del eje x
- 23. Etiqueta Eje X en serie de tiempo Trazado usando R
- 24. Desplazamiento de la posición de la etiqueta del eje X del eje lineal
- 25. Dibuja líneas desde el eje x a los puntos
- 26. gráfico de barras con el eje textual x - achartengine
- 27. Evite superponer etiquetas de eje en R
- 28. gráfico de barras graphael con texto eje x
- 29. Trazado de dos variables usando ggplot2 - el mismo eje x
- 30. Fuerza del eje X en ambos gráficos en una cuadrícula de facetas cuando los valores X son los mismos
que tenía el problema inverso: Las etiquetas de la segunda trama secundaria no mostrarían. así que utilicé su comando de esta manera: '' plt.setp (ax2.get_yticklabels(), visible = True) ''. Funcionó sin problemas. – n1000