2015-04-28 17 views
8

Sto provando a tracciare i miei dati non quadrati utilizzando gli hexplots JointGrid di Seaborn. Non riesco a capirlo non tracciare gli esbins con un rapporto di aspetto 1: 1.Come stampare un jointplot Seaborn non quadrato o JointGrid

Esiste comunque la possibilità di sovrascrivere il valore predefinito? La documentazione per jointplot e JointGrid semplicemente dire

formato: numerico, opzionale

Dimensione della figura (sarà quadrato).

Ho anche provato entrare alimentazione del extent kwarg sia jointplot e JointGrid, nonché ylim senza fortuna.

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

Il tuo problema con le proporzioni della figura o delle celle hexbin? – mwaskom

+0

Ciao @mwaskom, la figura stessa. Mi piacerebbe sbarazzarmi del padding e renderlo non quadrato, dato che i miei dati sono le mie coordinate non quadrate. – crypdick

+0

Suggerisco di impostare la figura da soli usando i comandi matplotlib. – mwaskom

risposta

8

incappato in questa domanda cercando la risposta me stesso. Dopo averlo capito, ho pensato di pubblicare la soluzione. Come il codice jointplot sembra abbastanza insistente per avere piazza cifra non so se questa è considerata una cattiva pratica, ma in ogni caso ...

Se guardiamo attraverso il codice jointplot e seguiamo in JointGrid, il parametro size a jointplot (e altrettanto JointGrid) viene utilizzato nella seguente espressione:

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

Quindi, per ottenere un non-quadrato JointGrid trama, basta eseguire:

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

per una figura 6x4.