2016-06-28 17 views
-1

Ich habe oft zwei Pandas-Datenframes, die ich in der gleichen Handlung plotten möchte. Normalerweise sind diese zwei Proben, und ich möchte ihre Eigenschaften zu kontrastieren, als Beispiel:Matplotlib/Pandas: Wie mehrere Streudiagramme an verschiedenen Orten in der gleichen Handlung plotten?

enter image description here

Die x-Achse hat einfach zwei Stellen, die linke für den ersten Datensatz und das Recht für den zweiten Datensatz .

In matplotlib kann man mehrere Datensätze innerhalb des gleichen Grundstück Grundstück:

import matplotlib.pyplot as plt 

x = range(100) 
y = range(100,200) 
fig = plt.figure() 
ax1 = fig.add_subplot(111) 

ax1.scatter(x[:4], y[:4], s=10, c='b', marker="s", label='first') 
ax1.scatter(x[40:],y[40:], s=10, c='r', marker="o", label='second') 
plt.show() 

enter image description here

jedoch

(1) Wie trennen Sie Ihre Datensätze in zwei Abteilen Orte wie die erstes Beispiel?

(2) Wie erreichen Sie dies mit zwei Pandas Datenrahmen? Müssen Sie sie zusammenführen und dann zwei Positionen für das Plotten angeben?

+0

Vielleicht suchen Sie ein seaborn stripplot? https://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.stripplot.html#seaborn.stripplot – tom

+0

@tom Ja! Das funktioniert perfekt. Ich denke, ich muss Datenrahmen zu einem zusammenführen, um dies zu verwenden. – ShanZhengYang

Antwort

1

Verwenden Sie return_type='axes', um data1.boxplot zu erhalten, um ein Matplotlib-Axes-Objekt zurückzugeben. Übergeben Sie dann diese Achsen an den zweiten Aufruf von Boxplot mit ax=ax. Dies führt dazu, dass beide Boxplots auf den gleichen Achsen gezeichnet werden.

ax = df1.plot() 
df2.plot(ax=ax) 


a1=a[['a','time']] 
ax = a1.boxplot(by='time', meanline=True, showmeans=True, showcaps=True, 
      showbox=True, showfliers=False, return_type='axes') 
a2 = a[['c','time']] 
a2.boxplot(by='time', meanline=True, showmeans=True, showcaps=True, 
     showbox=True, showfliers=False, ax=ax) 
+0

Ich bin mir nicht sicher, ob ich ohne Code mehr folge. 'df1' ist der erste Datenframe,' df2' ist der zweite. Ihr Code oben platziert beide Daten-Scatterplots im selben Frame? – ShanZhengYang

+0

Ja, das würde beide Streudiagramme im selben Frame platzieren, können Sie angeben, welche Probleme Sie haben – SerialDev

+0

Der vollständige Code ist einfacher zu folgen. Wie benutzt man 'return_type = 'axes'? – ShanZhengYang