问题描述
我正在尝试使用Seaborn的JointGrid绘制非对称数据.我可以使它使用相等的长宽比,但是然后我有多余的空格:
I am trying to plot my non-symmetric data using Seaborn's JointGrid. I can get it to use an equal aspect ratio, but then I have unwanted whitespace:
如何删除填充物? jointplot 和 JointGrid 简单地说
How do you remove the padding? The documentation for both jointplot and JointGrid simply say
我还尝试将extent
kwarg馈送给jointplot和JointGrid以及ylim
都没有运气.
I also tried going into feeding the extent
kwarg to both jointplot and JointGrid, as well as ylim
with no luck.
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
代码似乎非常坚持要使图形平方,所以我不知道这是否被认为是不正确的做法,但是无论如何...
Stumbled upon this question looking for the answer myself. Having figured it out I thought I'd post the solution. As the jointplot
code seems quite insistent on having the figure square I don't know if this is considered bad practice, but anyhow...
如果我们浏览jointplot
代码并将其跟随到JointGrid
中,则在以下表达式中使用jointplot
的size
参数(同样是JointGrid
):
If we look through the jointplot
code and follow it into JointGrid
, the size
parameter to jointplot
(and equally JointGrid
) is used in the following expression:
f = plt.figure(figsize=(size, size))
# ... later on
self.fig = f
因此,要获得非正方形的JointGrid
图,只需运行:
So to get a non-square JointGrid
plot, simply run:
grid = sns.jointplot(...)
grid.fig.set_figwidth(6)
grid.fig.set_figheight(4)
grid.savefig("filename.png", dpi=300)
用于6x4图形.
这篇关于如何绘制非方形Seaborn关节图或JointGrid的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!