Gráfico de barras / gráfico de líneas en el mismo gráfico, pero diferentes ejes y gráficos de líneas frente a los gráficos de barras

Estoy usando pandas para trazar algunos datos.

Si trazo esto:

import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame({'a': [100, 200, 150, 175], 'b': [430, 30, 20, 10]}) fig, ax1 = plt.subplots(figsize=(15, 10)) df['b'].plot(kind='bar', color='y') df['a'].plot(kind='line', marker='d') 

Todo se complica bien.

Buen grafo

Si grafico el eje de la barra en el eje secundario, el gráfico de la barra estará delante de los trazados de líneas, obstruyendo las líneas que se ven, de esta manera.

 import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame({'a': [100, 200, 150, 175], 'b': [430, 30, 20, 10]}) fig, ax1 = plt.subplots(figsize=(15, 10)) df['b'].plot(kind='bar', color='y', secondary_y=True) df['a'].plot(kind='line', marker='d') 

SadGraph

¿Cómo hago un gráfico de barras / línea donde …

  • Utilizando pandas / matplotlib
  • El gráfico de barras está en el eje secundario y el gráfico de líneas está en el eje primario
  • Parcelas de línea están en frente de la plot de barras

Podrías poner una línea en el eje primario.

 import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame({'a': [100, 200, 150, 175], 'b': [430, 30, 20, 10]}) fig, ax1 = plt.subplots(figsize=(15, 10)) df['b'].plot(kind='bar', color='y') df['a'].plot(kind='line', marker='d', secondary_y=True) 

introduzca la descripción de la imagen aquí

O bien, cree dos ejes ax1 y ax2 con twinx() .

 import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame({'a': [100, 200, 150, 175], 'b': [430, 30, 20, 10]}) fig, ax1 = plt.subplots(figsize=(15, 10)) ax2 = ax1.twinx() df['b'].plot(kind='bar', color='y', ax=ax1) df['a'].plot(kind='line', marker='d', ax=ax2) ax1.yaxis.tick_right() ax2.yaxis.tick_left() 

introduzca la descripción de la imagen aquí