2015-04-28 8 views
8

Próbuję wykreślić moje nieprostokątne dane za pomocą sześciokątów Seagorn JointGrid. Nie mogę tego zrobić, nie wykreślaj klatek o proporcjach 1: 1.Jak wykreślić nieprostokątny przegub Seaborn lub JointGrid

Czy mimo to można przesłonić wartość domyślną? Dokumentacja dla obu jointplot i JointGrid prostu powiedzieć

rozmiar: numeryczną, opcjonalny

Wielkość rysunku (będzie to kwadrat).

Próbowałem też wchodząc karmienia extent kwarg zarówno jointplot i JointGrid, jak również ylim bez powodzenia.

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

Czy Twój problem dotyczy współczynnika kształtu liczby lub komórek szesnastkowych? – mwaskom

+0

Witam @mwaskom, sama postać. Chciałbym pozbyć się dopełnienia i uczynić je nie kwadratem, ponieważ moje dane to moje współrzędne nie są kwadratowe. – crypdick

+0

Sugerowałbym po prostu ustawienie liczby samodzielnie za pomocą poleceń matplotlib. – mwaskom

Odpowiedz

8

Natknęliśmy się na to pytanie szuka odpowiedzi siebie. Po wymyśleniu tego pomyślałem, że opublikuję rozwiązanie. Ponieważ kod jointplot wydaje się dość natarczywy posiadania kwadrat figura ja nie wiem, czy to jest uważane za złą praktyką, ale tak czy owak ...

Jeśli spojrzymy poprzez kod jointplot a następnie ją do JointGrid parametr do sizejointplot (i równie JointGrid) stosuje się w następującym wyrażeniem:

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

Tak, aby uzyskać non-kwadrat JointGrid fabuły, po prostu uruchom:

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

dla postaci 6x4.