我正在尝试使用Seaborn的JointGrid绘制非对称数据。我可以使它使用相等的宽高比,但是我有多余的空格:
如何删除填充物?jointplot和JointGrid的文档都只是说
大小:数字,可选 图的大小(将为正方形)。
大小:数字,可选
图的大小(将为正方形)。
我也尝试将extentkwarg喂入jointplot和JointGrid,并且ylim没有运气。
extent
ylim
import numpy as np import seaborn as sns import matplotlib.pyplot as plt x = np.random.normal(0.0, 10.0, 1000) y = np.random.normal(0.0, 1.0, 1000) joint = sns.jointplot(x, y) joint.plot_marginals(sns.distplot, kde=False) joint.ax_joint.set_aspect('equal') # equal aspect ratio plt.show()
偶然发现了这个问题,自己寻找答案。弄清楚了之后,我想我应该发布解决方案了。由于jointplot代码似乎相当坚持要使用正方形,所以我不知道这是否被认为是不好的做法,但是无论如何…
jointplot
如果我们仔细阅读jointplot代码并将其跟踪到JointGrid,则在以下表达式中将使用size参数to jointplot(同样JointGrid是):
JointGrid
size
f = plt.figure(figsize=(size, size)) # ... later on self.fig = f
因此,要获得非正方形JointGrid图,只需运行:
grid = sns.jointplot(...) grid.fig.set_figwidth(6) grid.fig.set_figheight(4) grid.savefig("filename.png", dpi=300)
6x4的数字。