2016-03-22 3 views
3

Ich möchte in der Lage sein, eine Linie meiner Spezifikation über ein in Seaborn erzeugtes Diagramm zu zeichnen. Die Handlung, die ich wählte, war JointGrid, aber jedes Scatterplot wird ausreichen. Ich vermute, dass Seaborn es vielleicht nicht leicht macht, das zu tun?Wie kann ich mit seaborn eine Linie meiner Wahl über mein Streudiagramm ziehen?

Hier ist der Code der Daten (Datenrahmen aus dem Iris-Datensatz von Blütenblattlänge und Blütenblatt Breite) Plotten:

import seaborn as sns 
iris = sns.load_dataset("iris")  
grid = sns.JointGrid(iris.petal_length, iris.petal_width, space=0, size=6, ratio=50) 
    grid.plot_joint(plt.scatter, color="g") 

enter image description here

Wenn Sie nehmen diese Grafik aus der Iris-Datensatz, wie kann ich ziehe eine Linie meiner Wahl darüber? Zum Beispiel könnte eine Linie mit negativer Steigung die Cluster trennen, und eine positive Steigung könnte über sie hinweg verlaufen.

Antwort

5

Es scheint, dass Sie matplotlib.pyplot als plt importiert haben, um plt.scatter in Ihrem Code zu erhalten. Sie können nur die matplotlib Funktionen verwenden, um die Linie zu zeichnen:

import seaborn as sns 
import matplotlib.pyplot as plt 

iris = sns.load_dataset("iris")  
grid = sns.JointGrid(iris.petal_length, iris.petal_width, space=0, size=6, ratio=50) 
grid.plot_joint(plt.scatter, color="g") 
plt.plot([0, 4], [1.5, 0], linewidth=2) 

enter image description here

3

Durch eine JointGrid in Seaborn erstellen, haben Sie drei Achsen erstellt, die Haupt ax_joint, und die beiden Randachsen.

Um etwas anderes auf den Gelenkachsen zeichnen wir das Fugenraster grid.ax_joint zugreifen können, und dann erstellen Grundstück gibt Objekte auf, wie Sie es mit einem anderen matplotlibAxes Objekt.

Zum Beispiel:

import seaborn as sns 
import matplotlib.pyplot as plt 

iris = sns.load_dataset("iris")  
grid = sns.JointGrid(iris.petal_length, iris.petal_width, space=0, size=6, ratio=50) 

# Create your scatter plot 
grid.plot_joint(plt.scatter, color="g") 

# Create your line plot. 
grid.ax_joint.plot([0,4], [1.5,0], 'b-', linewidth = 2) 

Als Nebenwirkung, können Sie auch die Randachsen Zugriff eines JointGrid in ähnlicher Weise:

grid.ax_marg_x.plot(...) 
grid.ax_marg_y.plot(...)