【问题标题】:Plot Size - Using ggplot2 in IPython Notebook (via rmagic)绘图大小 - 在 IPython Notebook 中使用 ggplot2(通过 rmagic)
【发布时间】:2013-06-29 03:46:28
【问题描述】:

我已经开始将 R 的使用集成到 Notebook 中,从我的角度来看,这是两全其美的(python 中的数据管理,同时利用 R 的比较分析/图形优势)。不幸的是,我被一个看似简单的元素所吸引,为 ggplot2 图形调整绘图大小。使用 pandas 调整绘图大小非常简单,在纯 R 环境(如 RStudio)中,我可以使用 dev.new() 或 PNG() 等调整绘图。但是,尝试这样做是 Notebook 让我的电脑发疯(我在华硕 U46E 上运行 Ubuntu 13.04)。此外,这很关键,我想保持图形内联,以便我可以将整个脚本传递给我的同事。

尝试 dev.new() 时,我的计算机被锁定,我不得不切换到不同的虚拟终端重新启动。我试图调整 x11() 选项,我的浏览器暂时没有响应,而图形有点乱。最终,我再次获得了控制权,但我不知道为什么会这样。

有谁知道为什么会发生这种情况?此外,有谁知道如何调整从 IPython Notebook 中渲染的 ggplot2 对象的绘图大小?恐怕我不能分享数据,但我可以告诉你,我试图绘制三个由基金中心分面的数值变量(一个分类变量)。这些图确实按书面执行......直到我尝试调整大小。这是我的示例代码:

%%R
#x11(width=500,height=300) << didn't work
#dev.new() << tried before setting size parameters, and it locked up my laptop
#Plot total expenses by unit
print('*****Expenses by Unit*****')
print(smu)
print(ggplot(smu,aes(x=fy,y=as.numeric(as.character(totexp)),group=fund,colour=fund))+geom_line(size=2)+
        ggtitle('Total Expenses'))
#Plot expense components
print(ggplot(smu,aes(fy))+
      geom_line(aes(y=as.numeric(as.character(fixed)),colour='fixed',group=fund,colour=fund))+
      geom_line(aes(y=as.numeric(as.character(var)),colour='variable',group=fund,colour=fund))+
        geom_bar(aes(y=as.numeric(as.character(incadj)),group=1),stat='identity')+
        facet_grid(.~fund)+
        ggtitle('Components of Expenditure'))

【问题讨论】:

    标签: r ggplot2 ipython-notebook


    【解决方案1】:

    rmagic 命令有可选参数来指定绘图的大小。默认值为 480 像素的宽度和高度。因此,下面的代码复制了默认设置:

    %%R -w 480 -h 480 -u px
    library(ggplot2)
    dat <- data.frame(x = rnorm(10), y = rnorm(10), 
                      lab = sample(c('A', 'B'), 10, replace = TRUE))
    x <- ggplot(dat, aes(x = x, y = y, color = lab)) + geom_point()
    print(x)
    

    下面的代码创建了一个宽度为 50 厘米、高度为 25 厘米的绘图:

    %%R -w 50 -h 25 -u cm
    library(ggplot2)
    dat <- data.frame(x = rnorm(10), y = rnorm(10), 
                      lab = sample(c('A', 'B'), 10, replace = TRUE))
    x <- ggplot(dat, aes(x = x, y = y, color = lab)) + geom_point()
    print(x)
    

    您还可以以英寸或毫米为单位指定尺寸。

    【讨论】:

    • 非常感谢约翰!这很好用,尽管我无法毫无例外地指定单位。尽管如此,修改像素距离肯定可以完成工作。
    猜你喜欢
    • 2014-02-14
    • 2014-02-17
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 2014-05-28
    • 1970-01-01
    相关资源
    最近更新 更多