2017-04-18 8 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. 데이터에 쉽게 액세스 할 수 없습니다. 문제는 데이터 범위를 설정할 수 없다는 것입니다. 최소한의 형태로 문제를 재현 할 수 있다면 타사에서 도움을주기가 더 쉽습니다.