麻烦将两个折线图放在同一个ggplot图中

时间:2014-12-15 01:59:26

标签: r plot charts ggplot2

您好我想在一张图表中绘制两个折线图。这是我的数据的样子

query,trace,precision,recall
safe.order.q3.txt,sstr_cpu_50000_100m,49.774,24.8442
safe.order.q3.txt,sstr_oper_50000_100m,49.8735,24.885
safe.sem.q1.txt,ran_50000_100m,74.9204,24.8125
safe.sem.q1.txt,sys_50000_100m,58.1995,11.8975
safe.sem.q1.txt,rstr_cpu_50000_100m,75.6115,25.1855
safe.sem.q1.txt,rstr_oper_50000_100m,75.2262,24.9382
safe.sem.q1.txt,sstr_cpu_50000_100m,74.997,25.0963
safe.sem.q1.txt,sstr_oper_50000_100m,75.4195,25.3233
safe.sem.q2.txt,ran_50000_100m,78.6449,24.6323
safe.sem.q2.txt,sys_50000_100m,10.9353,0.255188
safe.sem.q2.txt,rstr_cpu_50000_100m,79.3762,24.6961
safe.sem.q2.txt,rstr_oper_50000_100m,79.1872,24.8607

以下是存储在recprec.r

中的ggplot代码
w <- read.csv(file="../queryResults/comparison.100m.dat", head=TRUE, sep=",")
sem1 <- subset(w, query=="safe.sem.q1.txt")
p1 <- ggplot(data=sem1, aes(group=1, x=trace, y=precision, color=trace)) + layer(geom="line") + geom_text(aes(y=precision + .4, label=precision))
p2 <- ggplot(data=sem1, aes(group=1, x=trace, y=recall, color=trace)) + layer(geom="line") + geom_text(aes(y=recall + .4, label=recall))
grid.arrange(p1, p2)
print(p1, p2)

执行代码会产生以下警告和下图中描绘的字符,其中每个折线图显示在单独的字符中

> source("recprec.r")
Erreur dans if (newpage) grid.newpage() : 
  l'argument n'est pas interprétable comme une valeur logique
De plus : Message d'avis :
In if (newpage) grid.newpage() :
  la condition a une longueur > 1 et seul le premier élément est utilisé

enter image description here

为了在同一个图中同时包含两个折线图,我需要更改什么?

1 个答案:

答案 0 :(得分:1)

如果您希望它们都在同一个绘图中,那么您需要将图层添加到绘图中 - 而不是排列多个绘图。尝试

ggplot(data=sem1, aes(group=1, x=trace)) + 
  geom_line(aes(y=precision)) + 
  geom_line(aes(y=recall)) + 
  geom_text(aes(y=precision + .4, label=precision)) + 
  geom_text(aes(y=recall + .4, label=recall))