如何绘制非正方形Seaborn jointplot或JointGrid

时间:2015-04-28 03:00:10

标签: python matplotlib plot data-visualization seaborn

我正在尝试使用Seaborn的JointGrid绘制我的非对称数据。我可以使用相同的宽高比,但后来我有不想要的空白:

Seaborn 2D heatmap jointplot with extra white space

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

  

尺寸:数字,可选

     
    

图的大小(它将是正方形)。

  

我也尝试过将extent kwarg送到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() 

3 个答案:

答案 0 :(得分:13)

我自己偶然发现了这个问题。弄清楚了,我以为我会发布解决方案。由于jointplot代码似乎非常坚持使用数字方形我不知道这是否被认为是不好的做法,但无论如何......

如果我们查看jointplot代码并将其关注到JointGrid,则size参数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数字。

答案 1 :(得分:1)

对于那些将Seaborn用于Jupyter笔记本的人,我建议在set_figwidht()命令之后立即调用set_figheight()sns.jointplot()

my_plot=sns.jointplot(x="K",y="errori",data=risultati , kind="scatter")
my_plot.fig.set_figwidth(13)

Jupyter Example

答案 2 :(得分:0)

您将需要设置ylimxlim参数,这会将x和y轴限制为您指定的元组范围:

例如

sns.jointplot(x="n_estimators", y="learning_rate", data=data,
              color="#172235", height=8, ratio=10, space=0,
              ylim=(0, 1.1), xlim=(-20, 310))  # <-- this