2017-04-18 63 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.数据不容易访问。你的问题是你无法设置数据范围。如果第三方能够以最简单的形式复制您的问题,则第三方可以更轻松地为您提供帮助。