Chang的大小取决于ggvis的一列

时间:2017-04-18 07:28:59

标签: r 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 :(得分:0)

scale_numeric函数控制最大和最小尺寸

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

via NuGet

range设置最小和最大尺寸,domain设置数据范围。默认情况下,您不需要

关于你可重复的例子的一些注意事项:我作为一个试图帮助的人,不能运行你的代码并修改它因为1.它被提供为闪亮应用程序的一半(仅服务器代码)和2.数据不是&# 39;易于访问。您的问题是您无法设置数据范围。如果第三方能够以最小的形式复制您的问题,则第三方更容易帮助您