2013-08-24 50 views
5

Tôi đang cố gắng để tạo ra một huyền thoại mà sẽ mất nhãn đĩa tùy biến màu sắc, alpha tương ứng với khu vực được nhấn mạnh trong một âm mưu chú thích và không phải là hàng loạt dữ liệu vẽ trong sơ đồ sử dụng mã:Tạo huyền thoại tùy chỉnh trong ggplot2

library(ggplot2) 
data(economics) 
p1 <- ggplot(data=economics, mapping=aes(x=date, y=unemploy)) + 
    geom_line(size=1) + 
    annotate("rect", xmin=as.Date('1970-01-01'), xmax=as.Date('1980-01-01'), ymin=-Inf, ymax=Inf, alpha=0.2, fill="red") + 
    annotate("rect", xmin=as.Date('1990-01-01'), xmax=as.Date('2000-01-01'), ymin=-Inf, ymax=Inf, alpha=0.2, fill="green") + 
p1 

nơi tôi muốn thêm chú thích có nhãn '1970s', '1990s' với các màu tương ứng màu đỏ và màu xanh lục với các chữ cái 0,2 tương ứng với các phần tử chú thích. Có cách nào để làm điều này?

Trả lời

11

Dễ nhất là tạo khung dữ liệu mới cho các vùng cần chú thích.

df<-data.frame(xmin=as.Date(c('1970-01-01','1990-01-01')), 
       xmax=as.Date(c('1980-01-01','2000-01-01')), 
       ymin=c(-Inf,-Inf), 
       ymax=c(Inf,Inf), 
       years=c("1970s","1990s")) 

Sau đó, sử dụng geom_rect() và khung dữ liệu mới này để thêm các khu vực đó. Chú giải sẽ được tạo tự động. Với scale_fill_manual() bạn có thể thay đổi màu sắc.

ggplot(data=economics, mapping=aes(x=date, y=unemploy)) + 
    geom_line(size=1)+ 
    geom_rect(data=df,aes(xmin=xmin,ymin=ymin,xmax=xmax,ymax=ymax,fill=years), 
        alpha=0.2,inherit.aes=FALSE)+ 
    scale_fill_manual(values=c("red","green")) 

enter image description here

+2

Fantastic. Điều đó làm việc một điều trị! – user2699676

+1

chỉ thích nghi nó với phân đoạn, hoạt động ma thuật! Liels paldies, Didzi! –

Các vấn đề liên quan