【问题标题】:How to separate two plots in R?如何在R中分离两个地块?
【发布时间】:2009-11-26 01:20:46
【问题描述】:

每当我运行这段代码时,第一个情节都会简单地覆盖前一个情节。 R中没有办法分开以获得两个地块吗?

plot(pc)
title(main='abc',xlab='xx',ylab='yy')

plot(pcs)
title(main='sdf',xlab='sdf',ylab='xcv')

【问题讨论】:

    标签: r plot


    【解决方案1】:

    如果您只想同时打开两个不同的绘图窗口,请使用dev.new,例如

    plot(1:10)
    dev.new()
    plot(10:1)
    

    如果您想在同一个窗口中绘制两个图,那么正如 Shane 所说,设置 mfrow 参数。

    par(mfrow = c(2,1))
    plot(1:10)
    plot(10:1)
    

    如果你想尝试一些更高级的东西,那么你可以看看 lattice graphics 或 ggplot,它们都非常适合创建条件图(不同数据子集出现在不同帧中的图)。

    格子示例:

    library(lattice)
    dfr <- data.frame(
      x   = rep(1:10, 2), 
      y   = c(1:10, 10:1), 
      grp = rep(letters[1:2], each = 10)
    )
    xyplot(y ~ x | grp, data = dfr)
    

    一个 ggplot 示例。 (您需要先从 CRAN 下载 ggplot。)

    library(ggplot2)
    qplot(x, y, data = dfr, facets = grp ~ .)
    #or equivalently
    ggplot(dfr, aes(x, y)) + geom_point() + facet_grid(grp ~ .)
    

    【讨论】:

    • 得给mfcol参数一些爱。它按列填充您的图,这与 R 中每个其他对象的填充方式一致(嗯,主要是矩阵)。才发现。一直想知道为什么情节是按行填充的......不要以为我会回到mfrow
    【解决方案2】:

    在绘图之前尝试使用par

     par(mfrow = c(2, 1))
    

    【讨论】:

      【解决方案3】:

      你也可以试试布局命令:

      试试 layout(1:2)

      plot(A)    
      plot(B)
      

      【讨论】:

        【解决方案4】:

        在每个情节之前尝试命令x11(),这是一个示例:

        x11()
        plot(1:10)
        x11()
        plot(rnorm(10))
        

        这将导致不同的绘图窗口。您可以将“par”命令添加到这些x11() 窗口中的任何一个,并获得更多种类的图,即一个窗口中有 4 个图,而另一个窗口中有一个大图。

        【讨论】:

          【解决方案5】:

          如果您想在单独的窗口或文件中显示 2 个绘图,您可以在调用每个绘图命令之前选择新设备。见:

          ?设备

          还有,

          ?dev.cur

          【讨论】:

          • 哦,好的,谢谢大家的好建议,又学到了新东西。
          【解决方案6】:

          另一种答案是将绘图分配为对象,然后您可以在需要时显示它 即

          abcplot<-plot(pc) title(main='abc',xlab='xx',ylab='yy')
          
          sdfplot<-plot(pcs) title(main='sdf',xlab='sdf',ylab='xcv')
          
          abcplot # Displays the abc plot
          sdfplot # Displays the sdf plot
          abcplot # Displays the abc plot again
          

          【讨论】:

          • 这不起作用。 plot 返回NULL。您不能以这种方式保存图形的详细信息。如果您使用基于grid 的图形(例如lattice),您的建议是可能的,例如p1 &lt;- xyplot(y~x); print(p1).
          猜你喜欢
          • 1970-01-01
          • 2012-11-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多