如何显示保存到变量的图?

时间:2017-09-19 00:33:28

标签: python matplotlib jupyter-notebook seaborn

我的第一个python问题。

考虑一下我在jabyter笔记本上用seaborn工作。假设我创建了一个绘图并将其保存到变量中:

g = sns.jointplot(ap['ap_lo'], ap['ap_hi']);

它会显示一次,因为我在开头加注了%matplotlib inline

现在,经过一些更改后,我想再次显示g

ax = g.ax_joint
ax.set_xscale('log')
ax.set_yscale('log')
g.ax_marg_x.set_xscale('log')
g.ax_marg_y.set_yscale('log')

sns.plt.show()

如您所见,我致电sns.plt.show(),但没有效果。我还尝试将g;g; sns.plt.show()放在最后。

2 个答案:

答案 0 :(得分:1)

如果是问题,gJointGrid个实例。

为了在jupyter笔记本单元格中显示图形,您需要说明该图形。 plt.show无法在新单元格中运行。 JointGrid创建的图形可通过fig属性获得。因此解决方案是键入

g.fig

完整示例图片:

enter image description here

答案 1 :(得分:-1)

在seaborn的文档中,sns.jointplot()返回JointGrid个对象。这个对象有一些显示图的功能。

您可以查看文档here

实际上,您需要致电g.plotg.plot_joint来显示您的情节。

更新

在深入了解源代码后,如果您使用默认参数,我会发现joinplot使用以下函数:

joint_kws = {}
joint_kws.update(kwargs)

marginal_kws = {}

color = color_palette()[0]
color_rgb = mpl.colors.colorConverter.to_rgb(color)
colors = [utils.set_hls_values(color_rgb, l=l)
          for l in np.linspace(1, 0, 12)]

grid = JointGrid(x, y, data, dropna=dropna,
                 size=size, ratio=ratio, space=space,
                 xlim=xlim, ylim=ylim)
...
joint_kws.setdefault("color", color)
grid.plot_joint(plt.scatter, **joint_kws)

marginal_kws.setdefault("kde", False)
marginal_kws.setdefault("color", color)
grid.plot_marginals(distplot, **marginal_kws)
...