2017-11-23 17 views
8

Dưới đây là đoạn mã của tôi,Highmap R (hoặc) javascript - thêm huyền thoại tùy chỉnh

output$map <- renderHighchart({ 
region_map = hcmap("countries/nz/nz-all") 
     highchart(type = "map") %>% 
     hc_title(text = "Average") %>% 
     hc_add_series_map(map = region_map, df = data1, joinBy = "name", value = "LTA", borderColor = "#141B4D", 
         color = "color", 
         showInLegend = TRUE, 
         borderWidth = 1) 
         ) %>% 
     hc_tooltip(useHTML = TRUE, headerFormat ="", pointFormat = "{point.name} <br> LTA: {point.value}") %>% 
    }) 

enter image description here

Và dữ liệu của tôi ở đây,

enter image description here

structure(list(name = c("Auckland", "Bay of Plenty", "Canterbury", 
"Central North Island", "Central Otago/Lakes District", "Coromandel" 
), LTA = c(23, 42, 25, 69, 71, 145), Changelabel = c("<20% Decrease", 
">20% Decrease", "<20% Decrease", ">20% Decrease", ">20% Decrease", 
">20% Decrease"), color = c("#B7DEE8", "#00B0F0", "#B7DEE8", 
"#00B0F0", "#00B0F0", "#00B0F0")), .Names = c("name", "LTA", 
"Changelabel", "color"), row.names = c(NA, 6L), class = "data.frame") 

Tất cả mọi thứ là tốt ở đây, nhưng khi tôi cho phép truyền thuyết ở đây, nó cho tôi gradient không phân biệt cột màu tôi đang sử dụng, làm cách nào để chỉ định cột màu với nhãn thay đổi là chú thích như

<20% Decrease - color (#B7DEE8) 
>20% Decrease - color (#00B0F0) 
+0

Đoạn mã đầu tiên không phân tích cú pháp (quá nhiều dấu ngoặc vuông phải), 'đầu ra $ map' có thể chỉ là' bản đồ', phải không? Cuối cùng, không tìm thấy tên 'region_map'. Tôi phải nói: những câu hỏi trên bản đồ này khá thú vị! – storaged

+0

Vâng, đó chỉ là đầu ra. Và bạn có thể sử dụng nz/nz-all map được cung cấp bởi highmap. đã cập nhật –

Trả lời

7

Ok. Sau rất nhiều thử nghiệm và sai sót, tôi đã làm được điều này. Đây là cách tôi đã làm (cung cấp ở đây để giúp độc giả trong tương lai).

Tôi đã thêm một cột gọi là giá trị trong tập dữ liệu của tôi

data1 <- data1 %>% mutate(value = ifelse(Changelabel == ">20% Decrease",1, 
          ifelse(Changelabel == "<20% Decrease",2, 
          ifelse(Changelabel == "<20% Increase",3, 
          ifelse(Changelabel == ">20% Increase",4, 5))))) 

Và sau đó tôi đã tạo ra một lớp dữ liệu cho trục màu:

dclass <- data_frame(from = seq(1, 4, by = 1), 
        name = c(">20% Decrease","<20% Decrease","<20% Increase",">20% Increase"), 
        color = c("#00B0F0","#B7DEE8","#92D050","#00B050")) 
dclass <- list_parse(dclass) 

Sau đó, trong bảng xếp hạng làm cho mã của tôi tôi đã thêm dòng này:

hc_colorAxis(dataClasses = dclass) 

Bây giờ, nó hoạt động với truyền thuyết phù hợp như tôi mong đợi.

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