2017-05-18 5 views
3

Ich versuche, eine Handlung zu machen, die so ähnlich ist, enter image description herePython Pandas Plotten Zwei BARH nebeneinander

Die linke Seite Diagramm (die Handlung mit Legende) aus df_2 abgeleitet, und der rechten Hand Seitenkarte ist abgeleitet von df_1.

Allerdings kann ich nicht die beiden Diagramme Seite-an-Seite die Y-Achse teilen.

Hier ist meine aktuelle Art und Weise zu planen:

df_1[target_cols].plot(kind='barh', x='LABEL', stacked=True, legend=False) 
df_2[target_cols].plot(kind='barh', x='LABEL', stacked=True).invert_xaxis() 
plt.show() 

Der Code wird in Folge zwei Grundstücke in zwei verschiedenen „Leinwand“.

  1. Wie kann ich sie Seite-an-Seite die Y-Achse teilen?
  2. Wie kann ich die Beschriftung in Y-Achse für die linke Seite Diagramm entfernen (Diagramm von df_2 abgeleitet)?

Alle Vorschläge werden sehr geschätzt. Vielen Dank.

Antwort

5

Sie können gemeinsame Unterplots mit plt.subplots(sharey=True) erstellen. Zeichnen Sie dann die Datenrahmen auf die zwei Teilpläne.

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

a = np.random.randint(5,15, size=10) 
b = np.random.randint(5,15, size=10) 

df = pd.DataFrame({"a":a}) 
df2 = pd.DataFrame({"b":b}) 

fig, (ax, ax2) = plt.subplots(ncols=2, sharey=True) 

ax.invert_xaxis() 
ax.yaxis.tick_right() 

df["a"].plot(kind='barh', x='LABEL', legend=False, ax=ax) 
df2["b"].plot(kind='barh', x='LABEL',ax=ax2) 
plt.show() 

enter image description here

+0

Dank! Es klappt! Jetzt verstehe ich, wie man 'subplot' verwendet! – arnold