【问题标题】:Line plot of multiple variables in RR中多个变量的线图
【发布时间】:2013-07-07 21:29:01
【问题描述】:

我输入了以下格式的数据。

  x      y       z
  0      2.2     4.5
  5      3.8     6.8
  10     4.6     9.3
  15     7.6     10.5

如何在 R 中绘制 xy 散点图,如 excel(如下所示)?

【问题讨论】:

  • 请检查您的术语。您的标题提到“线图”,但您的问题和标签指的是“散点图”。
  • 您能说说您遇到的问题吗?我认为不赞成票是由于缺少此信息。另外,如果我知道您到底对什么感到困惑,我的回答可能会更具体/更有帮助。

标签: r graphics line-plot


【解决方案1】:

至少有四种方法:

(1) 在此处使用名为 df 的“水平”或“宽”data.frame

df <- data.frame(x = c(0, 5, 10, 15), y = c(2.2, 3.8, 4.6, 7.6),z = c(4.5, 6.8, 9.3, 10.5))
    
ggplot(df, aes(x)) + 
  geom_line(aes(y = y, colour = "y")) +   
  geom_line(aes(y = z, colour = "z"))

(2) 使用点阵

library(lattice)
xyplot(x ~ y + z, data=df, type = c('l','l'), col = c("blue", "red"), auto.key=T)

(3) 将原始 df 转换为“长”数据帧。这就是您在 ggplot2 中处理数据的通常方式

library(reshape)
library(ggplot2)

mdf <- melt(df, id="x")  # convert to long format
ggplot(mdf, aes(x=x, y=value, colour=variable)) +
    geom_line() + 
    theme_bw()

(4) 使用 matplot() 我没有真正探索过这个选项,但这里有一个例子。

matplot(df$x, df[,2:3], type = "b", pch=19 ,col = 1:2)

【讨论】:

    【解决方案2】:

    如果你能说出你被困在这里的东西,这可能会有所帮助。这在 R 中真的很简单。您应该查找 ?plot?lines 的文档。对于简单的概述,Quick R 很棒。代码如下:

    windows()
      plot(x, y, type="l", lwd=2, col="blue", ylim=c(0, 12), xaxs="i", yaxs="i")
      lines(x,z, lwd=2, col="red")
      legend("topleft", legend=c("y","z"), lwd=c(2,2), col=c("blue","red"))
    

    请注意,如果您使用的是 Mac,则需要 quartz() 而不是 windows()。剧情如下:

    【讨论】:

    • windows 不是必需的 - plot 无论如何都会调用新的图形设备。
    • 这些天我只在 R Studio 工作。如果您不添加windows() 代码,则该图将进入我讨厌的图象限,并且纵横比会失真,因为我没有将其调整为完美的正方形。在我使用 R Studio 之前,我还使用了 windows() 代码,b/c 我总是制作多个绘图并且我不希望它们被覆盖。 IMO,这只是一个养成的好习惯。
    • 很高兴知道 - dev.new 在 RStudio 中的工作方式与 windows 相同吗?
    • 它似乎没有做任何事情。当然,您可以使用dev.set() 在设备之间移动,例如。
    • @gung 为什么这张图不以 0 开头?它以小于 0 的某个值开始?
    猜你喜欢
    • 2020-06-02
    • 1970-01-01
    • 2021-08-06
    • 2020-05-04
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多