2011-12-06 26 views
9

Tôi muốn điều chỉnh các dòng mẫu trong ggplot sau. Do đó, tôi giới thiệu một cột khác trong data.frame df đại diện cho kiểu dòng, nhưng một khi tôi chuyển đổi nó thành một yếu tố linetype thay vì "method" xuất hiện trong chú giải ... (xem thử nghiệm 3).ggplot2: cách điều chỉnh loại dòng + thứ tự trong chú giải?

Làm cách nào để nhận "phương thức" trong chú giải? Cuối cùng tôi muốn để có thể

  1. tự do chọn linetype,
  2. tự do lựa chọn thứ tự mà các linetypes xuất hiện trong truyền thuyết, và
  3. đã "phương pháp" tương ứng hiển thị như huyền thoại bản văn.

Dưới đây là những nỗ lực của tôi:

require(ggplot2) 
set.seed(1) 
df <- data.frame(x=c(1:4, 2:5), 
       method=rep(c("a", "b"), each=4), 
       lt=rep(c(5,3), each=4), 
       value=rep(c(0,1), each=4)+runif(8)) 

## trial 1: 
ggplot(df, aes(x=x, y=value)) + 
    geom_point() + 
    geom_line(aes(group=method, linetype=method)) 
# fine, but not the linetypes I would like to have 

## trial 2: 
ggplot(df, aes(x=x, y=value)) + 
    geom_point() + 
    geom_line(aes(group=method, linetype=lt)) 
# correct linetypes, but no legend 

## trial 3: 
ggplot(df, aes(x=x, y=value)) + 
    geom_point() + 
    geom_line(aes(group=method, linetype=as.factor(lt))) 
# legend, but not the correct one (I would like to have the "group"ing 
# variable "method" in the legend as in trial 1) 
+0

'+ scale_linetype (name = "Phương pháp")' dường như làm việc với thử nghiệm 3. – Chase

+0

Điều đó mang lại cho tôi những danh hiệu huyền thoại "Phương pháp", nhưng tôi vẫn nhận được "3" và "5 "là văn bản truyền thuyết thay vì" a "và" b "như trong bản dùng thử 1 –

Trả lời

16

Sử dụng method như linetype, nhưng sau đó tự bản đồ nó vào loại đường mà bạn muốn. Bạn không cần phải giới thiệu một biến khác theo cách này.

ggplot(df, aes(x=x, y=value)) + 
    geom_point() + 
    geom_line(aes(linetype=method)) + 
    scale_linetype_manual(breaks=c("a","b"), values=c(5,3)) 

enter image description here

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