【问题标题】:Save output of ggplot in ipython notebook to file将 ipython 笔记本中 ggplot 的输出保存到文件
【发布时间】:2015-06-28 15:08:15
【问题描述】:

我想在 ipython notebook 中使用 ggplot。我使用 rmagic 将数组传入 R 并可以将其绘制到输出单元格。但是,将绘图保存到文件似乎不起作用。

%load_ext rpy2.ipython

新单元格。我的python数据叫做data。

%%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 无法识别的文件格式。'

【问题讨论】:

    标签: r ggplot2 ipython-notebook


    【解决方案1】:

    如果打开特定设备(此处为 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 更明确,因为调用 ggsave 似乎猜测有多个绘图时应该绘制什么。

    【讨论】:

    • 谢谢。这就是我一直在寻找的答案。我不明白我需要明确输出情节。这是有道理的。
    • 在 R 控制台(交互式 R)中,调用返回的 ggplot 对象将打印自身(即在自身上调用通用 print)。我认为您还需要批量显式打印(非交互式)R。
    【解决方案2】:

    试试这个:

    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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      相关资源
      最近更新 更多