2017-09-19 32 views
0

虽然我的第一个python问题。如何显示保存到变量的图表?

考虑我在jabay笔记本与seaborn工作。假设我已经创建了一个阴谋并将其保存到一个变量:

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

,因为我一开始addeed %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

'g.show()'可能? –

+0

AttributeError:'JointGrid'对象没有属性'show' – kelin

+0

类似的问题,这不适用于我:https://stackoverflow.com/q/40965733/3050403 – kelin

回答

1

在该问题的情况下,gJointGrid实例。

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

g.fig 

完整示例图像:

enter image description here

0

在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) 
... 

我认为这是非常明显的。

+0

感谢您的答案。 'plot'和'plot_joint'都需要参数。如果我不想让情节保持不变,我应该传递什么参数?只有比例尺应该变为对数。 – kelin

+0

@kelin更新。 – Sraw

+0

我还仔细查看了源代码和红色文档。 'plot'等同于在JointGreed上创建一个新的图形,'plot_joint'创建点。我需要显示已修改的轴比例的现有绘图,所以我不能接受这个答案。 – kelin