2017-12-09 8 views
1

ggvisを使用してggvisで同時にポイントサイズと色をスケールする方法は?このようなdata.frame考慮

df <- data.frame(t = rep(seq(from=as.POSIXct('00:15:00',format='%H:%M:%S'), 
          to=as.POSIXct('24:00:00',format='%H:%M:%S'),by='15 min'),times=2), 
        y = c(rnorm(96,10,10),rnorm(96,40,5)), 
        group = factor(rep(1:2,each=96)), 
        type = factor(rep(1:3,each=64))) 

は、私はラインがgroupによってグループ化されているポイント・ラインプロットを生成します。 type==1type==2と点の大きさは全て50でありながら、type==3と点の大きさは、点の色は、​​、blueredtype1type2type3に対応しなければならない100であるべきです。ここに私のggvisコードは次のとおりです。

df <- data.frame(df,id=1:nrow(df)) 

all_values <- function(x) { 
    if(is.null(x)) return(NULL) 
    row <- df[df$id == x$id, ] 
    paste0(names(row), ": ", format(row), collapse = "<br />") 
} 

ggvis(data=df,x=~t,y=~y,stroke=~group) %>% 
    layer_points(fill=~type,size=~type, key:=~id, fillOpacity := 0.5, 
       fillOpacity.hover := 0.8,size.hover := 500) %>% 
    scale_nominal("size",domain = c(1,2,3), range = c(50,50,100)) %>% 
    scale_nominal("fill",domain = c(1,2,3), range = c('green','blue','red')) %>% 
    layer_lines() %>% 
    add_tooltip(all_values,'click') %>% 
    add_legend(scales=c("fill","size"), properties = legend_props(legend = list(y = 150))) %>% 
    set_options(duration = 0) %>% 
    add_axis(type="x",format="%H:%M") 

私はError: length(x) not less than or equal to 2のエラーが発生します。 なぜこれが起こったのですが、どうすれば修正できますか?

+0

'range = c(50,50,100)'はそれでも数値を使用したい場合は 'range = c(50,100)'に変更する必要があります。 – MKR

答えて

1

scale_nominal("size",domain = c(1,2,3), range = c(50,50,100))scale_nominal("size",domain = c(1,2,3), range = c('50','50','100'))に置き換えてください。

0

エラーの原因は、rangeに対して定義された2つ以上の値です。 rangeの定義は、For numeric values, the range can take the form of a two-element array with minimum and maximum values.

For ordinal data, the range may by an array of desired output values, which are mapped to elements in the specified domainを示唆しています。この場合、値は文字で定義する必要があります。

これでエラーを解決するはずです。

+0

はい、何度も文章を理解しようとしました。しかし、 'の配列は'私を混乱させた。 –

関連する問題