如何绘制非方形Seaborn关节图或JointGrid

发布于 2021-01-29 14:58:40

我正在尝试使用Seaborn的JointGrid绘制非对称数据。我可以使它使用相等的宽高比,但是我有多余的空格:

具有额外空白的Seaborn
2D热图联合图

如何删除填充物?jointplotJointGrid的文档都只是说

大小:数字,可选

图的大小(将为正方形)。

我也尝试将extentkwarg喂入jointplot和JointGrid,并且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()
关注者
0
被浏览
87
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    偶然发现了这个问题,自己寻找答案。弄清楚了之后,我想我应该发布解决方案了。由于jointplot代码似乎相当坚持要使用正方形,所以我不知道这是否被认为是不好的做法,但是无论如何…

    如果我们仔细阅读jointplot代码并将其跟踪到JointGrid,则在以下表达式中将使用size参数to
    jointplot(同样JointGrid是):

    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的数字。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看