2012-07-30 59 views
5

Tôi mới đến ggplot nên chịu với tôi. Tôi lập biểu đồ dự báo tăng trưởng cho 35 khu vực địa lý nhỏ, đó là một số tiền không lành mạnh cho một âm mưu ngay cả khi sử dụng thư viện tuyệt vời directlabels. Tuy nhiên tôi cần tất cả các bộ phim để sàng lọc ban đầu.Chuyển biến với các loại đường tới ggplot linetype

Thách thức là làm cho nó dễ đọc. Tôi đã tìm thấy bản sửa lỗi của @Ben Bolker để sử dụng large numbers of distinct colors nhưng đang gặp sự cố khi thay đổi linetype. Loạt 35 không cần phải là duy nhất, nhưng tôi muốn sử dụng 12 loại khác nhau để làm cho từng chuỗi dễ đọc hơn.

Kế hoạch của tôi là tạo ra một danh sách ngẫu nhiên với 35 yếu tố của 12 loại tốt và vượt qua điều đó như là đối số linetype, nhưng tôi đang gặp rắc rối khi muốn làm việc, với các lỗi:

Error: Aesthetics must either be length one, or the same length as the dataProblems:lty 

tôi có 35 giá trị trong danh sách linetype. Tất nhiên tôi muốn cho các loại, màu sắc và tất cả được phản ánh trong truyền thuyết.

Dữ liệu được làm nóng trông giống như sau; quan sát 9 năm cho mỗi 35 series:

> simulation_long_index[16:24,]  
     year geography value 
16 2018 sfr_2 101.1871 
17 2019 sfr_2 101.1678 
18 2020 sfr_2 101.2044 
19 2012 sfr_3 100.0000 
20 2013 sfr_3 100.1038 
21 2014 sfr_3 100.2561 
22 2015 sfr_3 100.0631 
23 2016 sfr_3 100.8071 
24 2017 sfr_3 101.2405  

Đây là mã của tôi cho đến nay:

lty <- data.frame(lty=letters[1:12][sample(1:12, 35,replace=T)]) 

g3<-ggplot(data=simulation_long_index, 
    aes(
    x=as.factor(year), 
    y=value, 
    colour=geography, 
    group=geography, 
    linetype=lty$lty))+ 
     geom_line(size=.65) + 
     scale_colour_manual(values=manyColors(35)) + 
    geom_point(size=2.5) + 
    opts(title="growth")+ 
    xlab("Year") + 
    ylab(paste("Indexed Value (Rel. to 2012")) + 
    opts(axis.text.x=theme_text(angle=90, hjust=0)) 

print(g3) 

thêm

scale_linetype_manual("",values=lty$lty) + 

sau scale_color_manual thay vì lập luận linetype sản xuất bảng xếp hạng, nhưng tất cả các dòng đều giống nhau. Làm thế nào, sau đó, tôi có được các dòng khác nhau cho số lượng lớn?

example plot

+4

'lty' cần phải là một cột trong khung dữ liệu gốc của bạn. (Và như một lưu ý chung, nếu bạn đang sử dụng các dấu hiệu đô la bên trong 'aes' đó là một dấu hiệu tốt cho thấy bạn đang làm điều gì đó sai.) – joran

Trả lời

10

Bí quyết với việc sử dụng scale_..._manual thường là gửi một vector được đặt tên như là đối số value. Chức năng setNames là tốt cho việc này

Thứ nhất, một số dữ liệu giả

## some dummy data 
simulations<- expand.grid(year = 2012:2020, geography = paste0('a',1:35)) 
library(plyr) 
library(RColorBrewer) 
simulation_long_index <- ddply(simulations, .(geography), mutate, 
    value = (year-2012) * runif(1,-2, 2) + rnorm(9, mean = 0, sd = runif(1, 1, 3))) 
## create a manyColors function 
manyColors <- colorRampPalette(brewer.pal(name = 'Set3',n=11)) 

Tiếp theo chúng ta tạo ra một vector đó là một mẫu ngẫu nhiên từ 01:12 (với thay thế) và thiết lập những cái tên giống như geography biến

lty <- setNames(sample(1:12,35,T), levels(simulation_long_index$geography)) 

Đây là những gì nó trông giống như

lty 
## a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 
## 7 5 8 11 2 10 3 2 5 4 6 6 11 8 2 2 
## a17 a18 a19 a20 a21 a22 a23 a24 a25 a26 a27 a28 a29 a30 a31 a32 
## 12 7 6 8 11 5 1 1 8 12 8 1 12 2 3 5 
## a33 a34 a35 
#7 1 3 

Bây giờ bạn có thể sử dụng line_type = geography kết hợp với scale_linetype_manual(values = lty)

ggplot(data=simulation_long_index, 
     aes(
      x=as.factor(year), 
      y=value, 
      colour=geography, 
      group=geography, 
      linetype = geography))+ 
      geom_line(size=.65) + 
      scale_colour_manual(values=manyColors(35)) + 
      geom_point(size=2.5) + 
      opts(title="growth")+ 
      xlab("Year") + 
      ylab(paste("Indexed Value (Rel. to 2012")) + 
      opts(axis.text.x=theme_text(angle=90, hjust=0)) + 
      scale_linetype_manual(values = lty) 

nào mang đến cho bạn

enter image description here

Là một sang một bên, bạn có thực sự muốn âm mưu năm như là một biến yếu tố?

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