我的第一个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()
放在最后。
答案 0 :(得分:1)
如果是问题,g
是JointGrid
个实例。
为了在jupyter笔记本单元格中显示图形,您需要说明该图形。 plt.show
无法在新单元格中运行。 JointGrid
创建的图形可通过fig
属性获得。因此解决方案是键入
g.fig
完整示例图片:
答案 1 :(得分:-1)
在seaborn的文档中,sns.jointplot()
返回JointGrid
个对象。这个对象有一些显示图的功能。
您可以查看文档here。
实际上,您需要致电g.plot
或g.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)
...