2017-04-18 60 views
0

我正在尋找方法根據列的值繪製點,所以有些點會比其他點大。如下所示,我可以在ggvis中完成它,但大小之間的差異並不顯着。點的長度大小取決於一列與ggvis

我想在ggvis中重現這個情節。 https://www.google.com/publicdata/explore?ds=d5bncppjof8f9_&ctype=b&strail=false&nselm=s&met_x=sp_dyn_le00_in&scale_x=lin&ind_x=false&met_y=sp_dyn_tfrt_in&scale_y=lin&ind_y=false&met_s=sp_pop_totl&scale_s=lin&ind_s=false&dimp_c=country:region&ifdim=country&iconSize=0.5&uniSize=0.035

server <- function(input, output) { 
    sub_df <- reactive({df[df$Year == input$year & df$Region %in% input$regions, ]}) 


    hover <- function(x) { 
    if(is.null(x)) return(NULL) 
    row <- df[df$Life == x$Life & df$Fertility == x$Fertility & !is.na(df$Life) & !is.na(df$Fertility), ] 
    paste0(row$Country) 
    } 

    sub_df %>% 
    ggvis(x = ~Life, y = ~Fertility, fill = ~factor(Region), size = ~Population) %>% 
    layer_points() %>% 
    add_axis("x", title = "Life Expectancy") %>% 
    add_axis("y", title = "Fertility Rate") %>% 
    add_legend("fill", title="Region", properties = legend_props(legend = list(y = 150))) %>% 
    add_legend("size", title="Population", properties = legend_props(legend = list(y = 50))) %>% 
    add_tooltip(hover, "hover") %>% 
    scale_numeric("x", domain = c(limits$lifemin, limits$lifemax), nice = F) %>% 
    scale_numeric("y", domain = c(limits$fertilitymin, limits$fertilitymax), nice = F) %>% 
    set_options(duration=0) %>% 
    bind_shiny("ggvis", "ggvis_ui") 

} 

我的情節是這樣的:

enter image description here

數據可以在這裏找到: http://data.worldbank.org/indicator/SP.POP.1564.TO.ZS?view=map

謝謝您的幫助!

+1

請顯示您正在使用的代碼。還要添加一小部分數據以使所有內容都具有可重現性。 –

+0

@RomanLuštrik詳細信息已添加!謝謝! – Alice

+0

繪圖大小似乎有差異。問題是,ggvis地圖的圈大小,還是它映射圖的半徑?您能否以易於複製/粘貼的方式提供數據和代碼?這個閃亮的應用程序並不是真正需要證明你在做什麼。 –

回答

0

scale_numeric功能控制最大和最小尺寸

mtcars %>% 
    ggvis(~wt,~mpg,size=~mpg) %>% 
    scale_numeric('size',domain = c(10,40),range=c(100,1000)) %>% 
    layer_points() 

enter image description here

range設定最小和最大尺寸,domain設置數據的範圍內。你不需要默認的

關於你的可重複的例子的一些筆記:我作爲一個人試圖幫助,無法運行你的代碼和修補它,因爲1.它提供了一個閃亮的應用程序的一半(僅服務器代碼)和2.數據不容易訪問。你的問題是你無法設置數據範圍。如果第三方能夠以最簡單的形式複製您的問題,則第三方可以更輕鬆地爲您提供幫助。