2015-04-28 8 views
8

plotten Ich versuche, meine nicht-quadratischen Daten mit Seagorn JointGrid Hexplots zu plotten. Ich kann nicht die Hexbins mit einem Seitenverhältnis von 1: 1 darstellen.Wie nicht-quadratische Seaborn Jointplot oder JointGrid

Gibt es trotzdem den Standard zu überschreiben? Die Dokumentation für beide jointplot und JointGrid einfach sagen

Größe: numerisch, optional

Größe der Figur (es Platz sein wird).

Ich habe auch versucht, in die ohne Glück sowohl extent kwarg zu jointplot und JointGrid sowie ylim gehen Fütterung.

hextraj = sns.jointplot('position_x', 'position_y', ensemble) 
hextraj.plot_marginals(sns.distplot, kde=False) 
hextraj.plot_joint(plt.hexbin, extent = boundary) 
hextraj.ax_joint.set_aspect('equal') # overrides distortion 
hextraj.ax_joint.invert_yaxis() # hack to flip y-axis (lab convention) 
cax = hextraj.fig.add_axes([1, .25, .04, .5]) 
plt.colorbar(cax=cax) 

2D heatmap with unwanted padding

+0

Ist Ihr Problem mit dem Seitenverhältnis der Figur oder der Hexbin-Zellen? – mwaskom

+0

Hallo @mwaskom, die Figur selbst. Ich möchte die Polsterung loswerden und sie nicht quadratisch machen, da meine Daten meine Koordinaten nicht quadratisch sind. – crypdick

+0

Ich würde vorschlagen, die Figur selbst mit Matplotlib-Befehlen einzurichten. – mwaskom

Antwort

8

auf diese Frage gestolpert für die Antwort selbst suchen. Nachdem ich es herausgefunden hatte, dachte ich, ich würde die Lösung posten. Da der jointplot Code scheint ziemlich hartnäckig die Figur Quadrat weiß ich nicht, auf, die, wenn diese schlechte Praxis betrachtet wird, aber trotzdem ...

Wenn wir den jointplot Code schauen und folgen ihm in JointGrid, der size Parameter jointplot (und ebenso JointGrid) in dem folgenden Ausdruck verwendet werden:

f = plt.figure(figsize=(size, size)) 
# ... later on 
self.fig = f 

So ein nicht-quadratischen JointGrid Grundstück zu bekommen, einfach laufen:

grid = sns.jointplot(...) 
grid.fig.set_figwidth(6) 
grid.fig.set_figheight(4) 
grid.savefig("filename.png", dpi=300) 

für eine 6x4 Figur.