2015-06-28 63 views
1

我想在ipython筆記本中使用ggplot。我使用rmagic將數組傳遞給R,並將其繪製到輸出單元格中。但是,將圖保存到文件似乎不起作用。將ipython筆記本中ggplot的輸出保存到文件

%load_ext rpy2.ipython 

新的細胞。我的Python數據被稱爲數據。

%%R -i data 
library(ggplot2) 

df=data.frame(x=seq(1,length(data)),y=data) 
pdf('plot.pdf') 
ggplot(data=df, aes(x=x,y=y)) + geom_point() 
dev.off() 

當我點擊文件plot.pdf時,我得到錯誤'文件無法打開。它可能會被損壞或使用Preview無法識別的文件格式。'

回答

3

如果打開一個特定設備(此處爲PDF文件),你將不得不調用print(一樣的,如果你在一個非交互式[R具有代碼)。

df=data.frame(x=seq(1,length(data)),y=data) 
pdf('plot.pdf') 
p <- ggplot(data=df, aes(x=x,y=y)) + geom_point() 
print(p) 
dev.off() 

這可能比對ggsave的調用更明確,這似乎是猜測當有多個圖時應該繪製什麼。

+0

謝謝。這是我正在尋找的答案。我不明白我需要明確輸出劇情。這是有道理的。 – Ben

+0

在R控制檯(交互式R)中,調用返回的ggplot對象將自行打印(即調用本身的通用'print')。您還需要批量打印(非交互式)R我認爲。 – lgautier

1

試試這個:

df <- data.frame(x=seq(1,length(data)),y=data) 
ggplot(data=df, aes(x=x,y=y)) + geom_point() 
ggsave('plot.pdf', width=8.27, height= 11.69) #A4 size in inches 
dev.off() 
+1

yup!只是試了一下。謝謝。 – Ben

相關問題