【问题标题】:Plotting 2 curves in the same graph in R在 R 中的同一图中绘制 2 条曲线
【发布时间】:2013-02-12 21:26:44
【问题描述】:

使用 R,我需要在同一张图中绘制 2 条曲线。所以,我必须绘制 x1 与 y1 以及 x2 与 y2。这里“x1”是0到12范围内的随机但已知的数字; “x2”是 0 到 9 范围内的随机但已知的数字;以及类似的 y1 和 y2 的其他一些已知范围。

我使用了以下代码:

d<-read.csv("ni1.csv")       # Reading in the data
x1<-d[,1]
y1<-d[,2]

d2<-read.csv("ni2.csv")
x2<-d2[,1]
y2<-d2[,2]

plot(x1,y1,pch="*", col='blue',xlim=c(0, 12), ylim=c(0,1300),main='Load Vs. Extension   Curves',xlab='Extension', ylab='Load')
par(new=TRUE)
plot(x2, y2, pch="*", col= 'red',xlim=c(0, 9), ylim=c(0,1400), axes= FALSE, xlab='', ylab='' )

现在的问题是,虽然我得到了 x1 与 y1 的正确曲线,但 x2 与 y2 的曲线在不正确的范围内。也就是说,x2 与 y2 的 x 范围超出了我绘制的值。

谁能帮忙解决这个问题? 非常感谢您的支持...

问候。

【问题讨论】:

  • 好吧,您可以将第一个图中的xlim 调整为与第二个图中的xlim 相同?
  • 请尝试使您的问题可重现。我们没有您的数据文件,因此您应该构建一些数据来显示您遇到的问题。

标签: r graph plot


【解决方案1】:

另一种方法是简单地使用par(new=TRUE) 将两个不同的图叠加在一起。

vv <- ts(c(3875, 4846, 5128, 5773, 7327,
                6688, 5582, 3473, 3186,
                 rep(NA, 51))
plot(drunkenness, lwd=3, col="grey", ann=FALSE, las=2)
par(new=TRUE)
plot(nhtemp, ann=FALSE, axes=FALSE,col='blue')

【讨论】:

    【解决方案2】:

    考虑改用points。将您的 plot(x2, y2, ...) 替换为:

    points(x2, y2, pch="*", col= 'red')
    

    【讨论】:

      【解决方案3】:

      您可以使用 ggplot2 包,但这需要您将数据重新排序到一个数据框中,并使用额外的列指定类别。

      library(ggplot2)
      d <- read.csv('ni1.csv',header=T)
      d2 <- read.cv('ni2.csv',header=T)
      #assuming header names are ´x´ and ´y´ 
      df <- rbind(d,d2)
      df$labels[(length(d[,1])+1):length(df[,1])] <- 'ni2'
      df$labels[1:length(d[,1])] <- 'ni1'
      qplot(x,y,data=df,geom='line') + facet_wrap(~labels)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多