【问题标题】:Having trouble using GGPlot to plot multiple lines on the same plot [Data Set Included]使用 GGPlot 在同一图上绘制多条线时遇到问题 [包括数据集]
【发布时间】:2016-08-15 01:50:26
【问题描述】:

这里是数据集,df.test:

   MLSpredictions BPLPredictions
1        1.392213      0.8326201
2        1.392213      0.8662049
3        1.448370      0.9011444
4        1.448370      1.0146486
5        1.448370      0.9374932
6        1.448370      0.9374932
7        1.448370      0.9011444
8        1.448370      1.0981538
9        1.448370      1.0555757
10       1.506792      1.0555757
11       1.506792      1.1424492
12       1.506792      1.0555757
13       1.567570      1.0981538
14       1.567570      1.0981538
15       1.567570      1.1424492
16       1.567570      1.1424492
17       1.567570      1.1885314
18       1.567570      1.1424492
19       1.567570      1.1885314
20       1.630800      1.2364723

我知道 GGPlot 要求您将所有信息包含在同一个数据框中,我相信我在上面已经完成了。

这是我的出发点:

ggplot(df.test, aes(x = 1:20, y = , color = ))

由于我的列名不同,我不确定“y”应该放什么。我一直在寻找将在这种情况下使用的示例数据帧,但我的结果是空的。

请指教。

[编辑] 我想提出一个情节,在同一情节中有两条不同颜色的线。

【问题讨论】:

  • 可能duplicate。而this post 提供有关aes(x) 的信息
  • 该问题缺少有关您要提出的内容的信息。您能否提供您要在图表中绘制的内容?
  • ggplot(df.test, aes(x=MSLpredictions, y=BPLPredictions)) + geom_line() 将为您发布的所有数据提供一行。例如,要获得两条不同颜色的线,您需要一个具有两个不同值的分类列。比如df.test$group = rep(c("A","B"), 10),那么,ggplot(df.test, aes(x=MSLpredictions, y=BPLPredictions, color=group)) + geom_line()
  • @eipi10 OP 也可以在两列上执行 rbind(),创建一个新的数据框并绘制图表。那会是错误的方法吗?
  • 我猜OP想要的是library(reshape2); library(ggplot2); cbind(df.test, id=1:20) %>% melt(id.vars="id") %>% ggplot(aes(x = id, y = value, colour = variable)) + geom_line()

标签: r ggplot2


【解决方案1】:

ggplot 期望输入数据采用所谓的“长”格式。在长数据集中,1 列包含实际数据值(无论它们可能是什么),所有其他列都告诉我们这些数据点的特征,例如这些值可能是什么类型的度量,它们属于哪个组等。您的数据的长版本可能如下所示:

index         variable      value
    1   MLSpredictions   1.392213
    2   MLSpredictions   1.392213
  ...              ...        ...
    1   BPLPredictions  0.8326201
    2   BPLPredictions  0.8662049
  ...              ...        ...

然后你可以得到你想要的情节:

my.plot <- ggplot(data = long.data, aes(x = index, y = value, color = variable)) +
           geom_line()

有几种方法可以将“宽”数据转换为长格式,其中一种是:

library(dplyr)
library(tidyr)

df$index <- 1:20
long.data <- gather(df, variable, value, -index)

【讨论】:

  • 谢谢,这绝对有帮助。现在,让事情变得更复杂一些,假设我还有 4 列是两组预测的置信区间的 upr 和 lwr 边界,这将如何工作。我知道如何使用 ggplot 创建置信区间功能区,只是不确定如何将它们全部绘制在同一个图上。
  • @user3552144 考虑单独提问
  • 我同意最好单独询问。简而言之,对于您想要使用的每个 ggplot 美学,您都需要一个列。因此,在这种情况下,您的数据将“较长”,并且包含错​​误术语的另一列。假设此列名为“错误”,您的 aes 将类似于 aes(x = index, y = value, ymin = value - error, ymax = value + error)
猜你喜欢
  • 2016-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 2018-03-14
  • 2013-07-16
相关资源
最近更新 更多