2012-09-22 31 views
12

Tôi có một số dữ liệu mà tôi đang sử dụng để vẽ biểu đồ. Tôi cũng có hai bộ ngưỡng có một số ý nghĩa.Thêm vline vào ô hiện có và xuất hiện trong chú giải ggplot2?

Tôi có thể vẽ biểu đồ và các vlines với các kiểu thích hợp. Tuy nhiên, tôi không thể có được vlines của tôi để hiển thị trong truyền thuyết. Tôi tin rằng một cái gì đó như thế này sẽ làm việc, tuy nhiên các mục huyền thoại không bao giờ hiển thị.

df <- data.frame(val=rnorm(300, 75, 10)) 

cuts1 <- c(43, 70, 90) 
cuts2 <- c(46, 79, 86) 

ggplot(data=df, aes(x=val)) + 
    geom_histogram() + 
    geom_vline(xintercept=cuts1, 
      linetype=1, 
      color="red", 
      labels="Thresholds A", 
      show_guide=TRUE) + 
    geom_vline(xintercept=cuts2, 
      linetype=2, 
      color="green", 
      labels="Thresholds B", 
      show_guide=TRUE) 

Cách khác, nếu tôi tạo một data.frame để cắt và vẽ bản đồ thẩm mỹ, tôi có thể hiển thị vlog của tôi trong chú giải. Thật không may, huyền thoại mang lại cho tôi hai trường hợp của các loại đường khác nhau chồng lên nhau:

cuts1 <- data.frame(Thresholds="Thresholds A", vals=c(43, 70, 90)) 
cuts2 <- data.frame(Thresholds="Thresholds B", vals=cuts2 <- c(46, 79, 86)) 

ggplot(data=df, aes(x=val)) + 
    geom_histogram() + 
    geom_vline(data=cuts1, aes(xintercept=vals, shape=Thresholds), 
      linetype=1, 
      color="red", 
      labels="Thresholds A", 
      show_guide=TRUE) + 
    geom_vline(data=cuts2, aes(xintercept=vals, shape=Thresholds), 
      linetype=2, 
      color="green", 
      labels="Thresholds B", 
      show_guide=TRUE) 

enter image description here

Vì vậy, cuối cùng, những gì tôi đang tìm kiếm, là cách đơn giản nhất để tự thêm hai tập hợp các dòng vào một ô, và sau đó để chúng xuất hiện chính xác trong chú giải.

Trả lời

22

Bí quyết là để đưa dữ liệu ngưỡng tất cả trong khung dữ liệu cùng, và sau đó bản đồ thẩm mỹ, chứ không phải để họ ra đi:

cuts <- rbind(cuts1,cuts2) 

ggplot(data=df, aes(x=val)) + 
    geom_histogram() + 
    geom_vline(data=cuts, 
      aes(xintercept=vals, 
       linetype=Thresholds, 
       colour = Thresholds), 
      show_guide = TRUE) 

enter image description here

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