2013-09-27 57 views
1

这里有两组数据:如何防止第二个ggplot2图例修改第一个图例?

dd1 <- structure(list(Test = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L), .Label = c("Test A", 
"Test B", "Test C", "Test D", "Test E"), class = "factor"), Batch = structure(c(1L, 
2L, 3L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 1L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 
4L, 4L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 1L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 
4L, 4L, 4L), .Label = c("A", "B", "C", "D"), class = "factor"), 
    Time = c(36, 36, 36, 36, 3, 6, 12, 18, 24, 36, 3, 6, 12, 
    18, 24, 36, 3, 6, 12, 18, 24, 36, 3, 6, 12, 18, 24, 36, 3, 
    6, 12, 18, 24, 36, 3, 6, 12, 18, 24, 36, 3, 6, 12, 18, 24, 
    36, 3, 6, 12, 18, 24, 36, 3, 6, 12, 18, 24, 36, 3, 6, 12, 
    18, 24, 36, 3, 6, 12, 18, 24, 36, 3, 6, 12, 18, 24, 36, 3, 
    6, 12, 18, 24, 36, 3, 6, 12, 18, 24, 36, 3, 6, 12, 18, 24, 
    36, 3, 6, 12, 18, 24, 36), Result2 = c(0.015, 0.015, 0.02, 
    0.02, 6.5, 6.6, 6.5, 6.5, 6.5, 6.5, 6.5, 6.6, 6.5, 6.5, 6.5, 
    6.4, 6.5, 6.6, 6.4, 6.5, 6.6, 6.5, 6.5, 6.6, 6.5, 6.5, 6.6, 
    6.5, 0.73, 0.72, 0.72, 0.73, 0.74, 0.73, 0.73, 0.72, 0.72, 
    0.76, 0.74, 0.73, 0.68, 0.65, 0.66, 0.65, 0.68, 0.67, 0.69, 
    0.66, 0.67, 0.66, 0.67, 0.67, 99, 96, 98, 101, 98, 97, 95, 
    94, 98, 99, 100, 98, 97, 91, 101, 100, 100, 98, 96, 92, 100, 
    100, 98, 98, 99, 99, 99, 100, 98, 97, 99, 99, 99, 100, 98, 
    97, 99, 98, 99, 99, 98, 98, 99, 98, 99, 99, 97, 96), Censored = structure(c(TRUE, 
    TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
    FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE 
    ), .Dim = c(100L, 1L))), .Names = c("Test", "Batch", "Time", 
"Result2", "Censored"), row.names = c(147L, 335L, 523L, 711L, 
70L, 85L, 100L, 117L, 132L, 152L, 258L, 273L, 288L, 305L, 320L, 
340L, 446L, 461L, 476L, 493L, 508L, 528L, 634L, 649L, 664L, 681L, 
696L, 716L, 67L, 82L, 97L, 114L, 129L, 149L, 255L, 270L, 285L, 
302L, 317L, 337L, 443L, 458L, 473L, 490L, 505L, 525L, 631L, 646L, 
661L, 678L, 693L, 713L, 78L, 93L, 110L, 125L, 142L, 162L, 266L, 
281L, 298L, 313L, 330L, 350L, 454L, 469L, 486L, 501L, 518L, 538L, 
642L, 657L, 674L, 689L, 706L, 726L, 66L, 81L, 96L, 113L, 128L, 
148L, 254L, 269L, 284L, 301L, 316L, 336L, 442L, 457L, 472L, 489L, 
504L, 524L, 630L, 645L, 660L, 677L, 692L, 712L), class = "data.frame") 
dd2 <- structure(list(Test = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("Test B", "Test C", 
"Test D", "Test E"), class = "factor"), Batch = structure(c(1L, 
1L, 2L, 2L, 3L, 3L, 4L, 4L, 1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L, 1L, 
1L, 2L, 2L, 3L, 3L, 4L, 4L, 1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L), .Label = c("A", 
"B", "C", "D"), class = "factor"), Result2 = c(6.5, 6.6, 6.5, 
6.6, 6.6, 6.6, 6.5, 6.6, 0.76, 0.74, 0.76, 0.75, 0.7, 0.68, 0.69, 
0.68, 100, 103, 100, 102, 99, 101, 101, 100, 99, 98, 99, 98, 
97, 98, 97, 98), Timepoint = c("1 week,4°C", "1 week,37°C", "1 week,4°C", 
"1 week,37°C", "1 week,4°C", "1 week,37°C", "1 week,4°C", "1 week,37°C", 
"1 week,4°C", "1 week,37°C", "1 week,4°C", "1 week,37°C", "1 week,4°C", 
"1 week,37°C", "1 week,4°C", "1 week,37°C", "1 week,4°C", "1 week,37°C", 
"1 week,4°C", "1 week,37°C", "1 week,4°C", "1 week,37°C", "1 week,4°C", 
"1 week,37°C", "1 week,4°C", "1 week,37°C", "1 week,4°C", "1 week,37°C", 
"1 week,4°C", "1 week,37°C", "1 week,4°C", "1 week,37°C")), .Names = c("Test", 
"Batch", "Result2", "Timepoint"), row.names = c(40L, 55L, 228L, 
243L, 416L, 431L, 604L, 619L, 37L, 52L, 225L, 240L, 413L, 428L, 
601L, 616L, 48L, 63L, 236L, 251L, 424L, 439L, 612L, 627L, 36L, 
51L, 224L, 239L, 412L, 427L, 600L, 615L), class = "data.frame") 

里有“批量”普通级​​别和“测试”列:

> str(dd1) 
'data.frame': 100 obs. of 5 variables: 
$ Test : Factor w/ 5 levels "Test A","Test B",..: 1 1 1 1 2 2 2 2 2 2 ... 
$ Batch : Factor w/ 4 levels "A","B","C","D": 1 2 3 4 1 1 1 1 1 1 ... 
$ Time : num 36 36 36 36 3 6 12 18 24 36 ... 
$ Result2 : num 0.015 0.015 0.02 0.02 6.5 6.6 6.5 6.5 6.5 6.5 ... 
$ Censored: logi [1:100, 1] TRUE TRUE TRUE TRUE FALSE FALSE ... 
> str(dd2) 
'data.frame': 32 obs. of 4 variables: 
$ Test  : Factor w/ 4 levels "Test B","Test C",..: 1 1 1 1 1 1 1 1 2 2 ... 
$ Batch : Factor w/ 4 levels "A","B","C","D": 1 1 2 2 3 3 4 4 1 1 ... 
$ Result2 : num 6.5 6.6 6.5 6.6 6.6 6.6 6.5 6.6 0.76 0.74 ... 
$ Timepoint: chr "1 week,4°C" "1 week,37°C" "1 week,4°C" "1 week,37°C" ... 
> head(dd1) 
     Test Batch Time Result2 Censored 
147 Test A  A 36 0.015  TRUE 
335 Test A  B 36 0.015  TRUE 
523 Test A  C 36 0.020  TRUE 
711 Test A  D 36 0.020  TRUE 
70 Test B  A 3 6.500 FALSE 
85 Test B  A 6 6.600 FALSE 
> head(dd2) 
     Test Batch Result2 Timepoint 
40 Test B  A  6.5 1 week,4°C 
55 Test B  A  6.6 1 week,37°C 
228 Test B  B  6.5 1 week,4°C 
243 Test B  B  6.6 1 week,37°C 
416 Test B  C  6.6 1 week,4°C 
431 Test B  C  6.6 1 week,37°C 

这第一张图是我想的第一件事,这是很好的:

gg <- ggplot() + 
    geom_point(aes(x=Time, y=Result2, size=Censored), data=dd1) + 
    scale_x_continuous(breaks=unique(dd1$Time)) + 
    scale_size_discrete("title 1") + 
    facet_grid(Test ~ Batch, scales="free") 
gg 

enter image description here

但是,当我加的曲线图的第二部分,基于所述第二数据集,第一图例被修改(部分线出现通过分):

gg + geom_hline(aes(yintercept=Result2, colour=Timepoint), data=dd2, 
       linetype="dashed", show_guide=TRUE) + 
    scale_colour_discrete("title 2") 

enter image description here

我想这两个图例,但我不当我添加第二个时,我想要第一个这样修改。请问该怎么办?

回答

2

您可以使用功能guides()并在此功能中为size图例集linetype=0使用参数override.aes=

+guides(size= guide_legend(override.aes = list(linetype = 0))) 
相关问题