2014-10-09 74 views
2

在iPython中,我使用Pandas繪圖函數在一個單元格中創建圖像。在同一個筆記本的另一個降價單元中,我想添加這個數字內聯。將圖插入iPython降格單元

是否可以引用記事單元中的筆記本內部數字而不將它們保存到磁盤?

回答

0

編輯:它在同一個筆記本!

是的,你可以,但不是在減價單元格(據我所知)。

只需保存你的身材在圖形對象(如果尚未通過fig = plt.figure()完成)

plt.plot(...) 
fig = plt.gcf() 

然後調用fig在筆記本哪裏。爲了擺脫HTML轉換後的輸入單元格,請參見下文。


如果2之間不同的筆記本電腦(而且在同類筆記本中工作)

我能得到您的要求最接近的是使用圖像的BASE64地址:到目前爲止

它似乎降價並不能很好地處理這個問題,但是你可以把以下內容放在一個神奇的單元中。

%%html 
<img alt="Image" src="data:image/png;base64,iVBORw0KG ... hEJRU5ErkJggg==" /> 

隨着

data:image/png;base64,iVBORw0KG ... hEJRU5ErkJggg== 

是用base64你的形象。您可以通過右鍵單擊其他筆記本中的圖像並選擇「複製圖像地址」(如果它是內嵌圖像)來獲得此地址。否則,您可以使用映像到base64轉換器。

在這裏你仍然可以看到輸入單元格,但是如果你最終在html中轉換你的筆記本電腦,你將能夠用一些Javascript隱藏輸入單元格。 (See here for how to,免責聲明:這是我的答案(對我的問題))。

最後,您可以隱藏%%html魔術單元格,同時保留圖像。

希望這有助於

+0

你也可以在md單元格中savefig(...)'和'![myfig](file/path-to-myfig.png)'。 – Matt 2014-10-09 13:16:01

+0

是的,但OP沒有將圖像保存到磁盤問! – jrjc 2014-10-09 13:19:20

+0

啊,真的,我讀得太快了。 – Matt 2014-10-09 16:48:12

1

如果你保持在創建人物時Axes實例可以很容易地做到這一點:如果你使用的熊貓繪圖函數,首先創建軸作爲前

t = arange(0,6,0.01) 
x = sin(t) 

fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot(t,x) 

和然後將實例作爲參數傳遞給熊貓繪圖函數:pandas.DataFrame.plot(ax=ax)。舉個例子:

from pandas import Series, date_range 
ts = Series(randn(1000), index=date_range('1/1/2000', periods=1000)) 
ts = ts.cumsum() 

fig = plt.figure() 
ax = fig.add_subplot(111) 
ts.plot(ax=ax) 

然後你就可以重新使用在另一個小區的相同數字:

display(ax.get_figure()) 
+0

太好了。 'display'允許重用現有的'axes'。 – Dror 2015-02-11 17:11:02

0

的matplotlib魔線可能會做你想要什麼:

%matplotlib inline 

它會進入一個輸出單元。