2015-05-25 68 views
1

我導入了一些地圖數據並定義了三個我感興趣的「區域」。Scale_Fill_Manual()for ggvis Map?

library(ggvis) 
library(ggplot2) 
countyDF <- map_data('county') 
statesList = c("new york", "pennsylvania", "massachusetts", "new jersey", 
      "connecticut", "maine", "new hampshire", "rhode island", "vermont") 

mapDF <- subset(countyDF, region %in% statesList) 
mapDF$area <- "New England" 
mapDF$area[which(mapDF$region=="new york")] <- "New York" 
mapDF$area[which(mapDF$region %in% c("pennsylvania", "new jersey"))] <- "Mid Atlantic" 

然後,我通過繪製彩色區域地圖:

mapDF %>% ggvis(x=~long, y=~lat) %>% 
    group_by(group) %>% 
    layer_paths(fill= ~area) 

這給了我一個很好的地圖,但我想調整默認的調色板。理想情況下,使用ggplot2 +scale_fill_manual()選項,可以爲變量的特定值設置特定顏色。有沒有在ggvis中做這個的選項?

作爲一種解決方法,我創建了一個新的「areaColor」變量,然後設置(:=)填充到areaColor,但我得到了錯誤「length(x)不等於1」。所以我想我只能設置一個值而不是我有條件定義的值向量。

回答

1

你可以用它來改變顏色:您需要創建您的數據集,以反映該地區列,並使用:=運營商作出新的列

mapDF$colour <- ifelse(mapDF$are == 'New England', 'blue', 
         ifelse(mapDF$area == 'Mid Atlantic', 'orange', 
           ifelse(mapDF$area == 'New York', 'red', ''))) 


mapDF %>% ggvis(x=~long, y=~lat) %>% 
    group_by(group) %>% 
    layer_paths(fill:= ~colour) 

enter image description here

所以基本上這行得通。我不認爲有一個相當於scale_fill_manual的ggvis。

+0

非常感謝LyzandeR。實際上我剛剛在工具提示上投了你的另一個答案。你今天真的很幫我。 –

+0

不客氣Max!真的很高興聽到我的幫助:) – LyzandeR

1

儘管接受的答案允許您添加自定義顏色,但會導致圖例丟失,並且我看不到如何將其添加回來。

我認爲下面的方法有點簡單。它不需要創建新變量,並保留圖例。

您簡單需要使用scale_nominal()搭配的顏色,以分組變量的每個級別:

mapDF %>% ggvis(x=~long, y=~lat) %>% 
    group_by(group) %>% 
    layer_paths(fill= ~area) %>% 
    scale_nominal("fill", 
      domain = c('Mid Atlantic','New York','New England'), 
      range = c('blue', 'orange', 'red')) 

這給: enter image description here