2017-09-19 30 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