2016-03-24 3 views
0

Ich versuche, ein seaborn JointGrid Objekt mit scatter + Konturen in den Joint-Plot und KDEs in den Randbereichen zu erstellen. Das bringt mich ziemlich nah, aber die y-Achse marginal nicht angemessen skaliert. Was ist der beste Weg, um die Randachsen manuell neu zu skalieren? Danke im Voraus!Skalierung der Achse auf Seaborn JointGrid KDE Marginal Plots

f = p.figure() 
ax = f.add_subplot(111) 
g = sns.JointGrid(xdata, ydata, xlim=(0,1), ylim=(0,1)) 
g.plot_joint(sns.kdeplot, shade=True, cmap="Greys", n_levels=10) 
g.plot_joint(p.scatter, color='#e74c3c', s=1.5) 
g.plot_marginals(sns.kdeplot, color="black", shade=True) 
g.ax_joint.collections[0].set_alpha(0) 
g.set_axis_labels(r'$\frac{\chi_{0}^2-\chi_{\mathrm{null},1}^2{\chi_{0}^2}$', r'$\frac{\chi_{0}^2-\chi_{\mathrm{null},4}^2}{\chi_{0}^2}$') 
p.gcf().subplots_adjust(bottom=.15) 
p.gcf().subplots_adjust(left=.15) 
p.savefig('something') 

Dies ein neues Konto zu sein, ich habe nicht den Ruf, ein Bild zu schreiben - ein Link meinen Versuch, hier ist ->http://i.imgur.com/9iG860U.png

enter image description here

Antwort

3

Sie können dies steuern, indem Sie den Zugriff auf die y-Randachsen mit g.ax_marg_y. Von dort aus können Sie die Achsengrenzen in der üblichen matplotlib Weise steuern. In diesem Fall möchten Sie die xlim anzupassen:

g.ax_marg_y.set_xlim(0,xmax) 

wo xmax ist die Nummer, die Sie manuell ändern müssen.

Wenn Sie möchten, können Sie den aktuellen xmaxget_xlim() mit finden:

xmin, xmax = g.ax_marg_y.get_xlim() 

Dann könnten Sie nur xmax durch ein Vielfaches erhöhen. Zum Beispiel:

xmin, xmax = g.ax_marg_y.get_xlim() 
g.ax_marg_y.set_xlim(xmin,xmax*2) 
+0

Großartig, das hat mein Problem gelöst! Danke Tom! – Tim