Tengo dos marcos de datos:
df1=pd.DataFrame(10*np.random.rand(4,3),index=[2,3,4,5],columns=["I","J","K"]) df2=pd.DataFrame(10*np.random.rand(4,3),index=[1,2,3,4],columns=["I","J","K"])Después de crear un gráfico de barras obtengo:
Ahora quiero fusionarlos en una sola figura, así que probé:
fig, ax = plt.subplots(sharex=True) ax1 = df1.plot.bar(legend=True, rot=0, stacked=True, width=0.1, position=1, colormap="bwr", ax=ax, alpha=0.7) ax2 = df2.plot.bar(legend=True, rot=0, stacked=True, width=0.1, position=0, colormap="BrBG", ax=ax, alpha=0.7) plt.show() Pero el resultado no es lo que esperaría: 
Como puede ver, me gustaría que el eje x tuviera los valores 1, 2, 3, 4, 5 y que los gráficos correspondieran a su valor de índice original. ¿Dónde está el problema y cómo podría solucionarlo?
Además, si fuera posible, necesitaría establecer los nuevos valores de eje automáticamente, ya que tengo muchos de estos marcos de datos, todos con diferentes valores de eje, e insertar los nuevos valores de eje manualmente llevaría mucho tiempo. ¿Tal vez podría usar .unique() en la columna de índice e implementar esto de alguna manera?
Puede reindexar ambos marcos de datos al mismo índice:
import matplotlib.pyplot as plt import pandas as pd import numpy as np df1 = pd.DataFrame(10 * np.random.rand(4, 3), index=[2, 3, 4, 5], columns=["I", "J", "K"]) df2 = pd.DataFrame(10 * np.random.rand(4, 3), index=[1, 2, 3, 4], columns=["I", "J", "K"]) fig, ax = plt.subplots() combined_index = df1.index.union(df2.index) df1.reindex(combined_index).plot.bar(legend=True, rot=0, stacked=True, width=0.1, position=1, colormap="bwr", alpha=0.7, ax=ax) df2.reindex(combined_index).plot.bar(legend=True, rot=0, stacked=True, width=0.1, position=0, colormap="BrBG", alpha=0.7, ax=ax) plt.show() El diagrama de barras de Pandas crea x-ticks categóricos (numerados internamente 0,1,2,... ) utilizando el índice del marco de datos. Primero se asignan las posiciones internas de tick y luego las etiquetas. Al usar el mismo índice para ambos marcos de datos, las posiciones coincidirán.