En matplotlib, ¿cómo se visualiza un eje en ambos lados de la figura?

Quiero dibujar un gráfico con matplotlib con eje en ambos lados del gráfico, similar a este gráfico (el color es irrelevante para esta pregunta):

trama

¿Cómo puedo hacer esto con matplotlib ?

Nota: al contrario de lo que se muestra en el gráfico de ejemplo, quiero que los dos ejes sean exactamente iguales, y quiero mostrar solo un gráfico. Agregar los dos ejes es solo para facilitar la lectura del gráfico.

Hay un par de ejemplos relevantes en la documentación en línea:

  • Dos escalas (parece hacer exactamente lo que estás pidiendo)
  • Dual Fahrenheit y Celsius

Puedes usar tick_params () (esto lo hice en el cuaderno de Jupyter ):

 import matplotlib.pyplot as plt bar(range(10), range(10)) tick_params(labeltop=True, labelright=True) 

Genera esta imagen:

Gráfico de barras con ambos ejes xe y rotulados igual.

UPD: agregado un ejemplo simple para subplots. Debes usar tick_params() con el objeto axis.

Este código establece que solo se muestren las tags superiores para la subplot superior y las tags inferiores para la subplot inferior (con las marcas correspondientes):

 import matplotlib.pyplot as plt f, axarr = plt.subplots(2) axarr[0].bar(range(10), range(10)) axarr[0].tick_params(labelbottom=False, labeltop=True, labelleft=False, labelright=False, bottom=False, top=True, left=False, right=False) axarr[1].bar(range(10), range(10, 0, -1)) axarr[1].tick_params(labelbottom=True, labeltop=False, labelleft=False, labelright=False, bottom=True, top=False, left=False, right=False) 

Se ve como esto:

Subplots ticks config ejemplo

He hecho esto previamente usando lo siguiente:

 # Create figure and initial axis fig, ax0 = plt.subplots() # Create a duplicate of the original xaxis, giving you an additional axis object ax1 = ax.twinx() # Set the limits of the new axis from the original axis limits ax1.set_ylim(ax0.get_ylim()) 

Esto duplicará exactamente el eje y original.