2017-04-18 5 views
0

列の値に応じて点をプロットする方法を探しているので、いくつかの点は他の点より大きくなります。私はggvisで以下のようにすることができますが、サイズの違いはそれほど重要ではありません。ggvisで1つの列に依存する点の長さ

私は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、最小サイズと最大サイズを設定します。あなたはデフォルトでそれを必要としません

あなたの再現可能な例のいくつかのノート:私は助けようとする人として、あなたのコードとtinkerを実行することはできません1.それは光沢のあるアプリケーションの半分サーバーコード)2.データに簡単にアクセスできない。あなたの問題は、データ範囲を設定できないことでした。問題を最小限の形で再現できる場合は、第三者が手助けする方が簡単です

関連する問題