2016-08-03 9 views
1

私はggvisを使ってバープロットを描画しようとしていますが、各変数に対して負の値と正の値を持つデータがあります。これは、ggplot2のthisの例に似ています。ggvis barplot:負の値

しかし、私がggvisで何か似たようなことをしようとすると、基本的にプロットは全くなく、ちょっと変わった行に終わります。

例データ:

df <- data.frame(
direction=rep(c("up", "down"), each=3), 
value=c(1:3, -c(1:3)), 
x=rep(c("A", "B", "C"), 2)) 

これは、すべての正の値のため、作品は:私もプロットの様々な組み合わせを試してみた

df %>% 
ggvis(x=~x, y=~value) %>% 
group_by(direction) %>% 
layer_bars(stack=TRUE) 

df %>% 
mutate(value.pos=abs(value)) %>% 
ggvis(x=~x, y=~value.pos) %>% 
group_by(direction) %>% 
layer_bars(stack=TRUE) 

これは私に何も与えません1つ1つ、たとえば:

df %>% 
spread(key=direction, value=value) %>% 
ggvis(x=~x, y=~up) %>% 
layer_bars() %>% 
layer_bars(x=~x, y=~down) 

これまでのところ、運はありません。私はいくつかの単純な解決策が欠けていると思われます...

答えて

0

私はggvisは、陽性データと同じグループ内の負の値を持つスタックバープロットを生成することはできません。

これは、x値がデータ内に複数回現れた場合、ggvisは各xのy値を合計するためです。私はあなたがベクトル1:3をプロットして以来、彼らはキャンセルしたと思っていましたが、そうではありません。

現在のところ、私はこのために避けられたバープロットが存在するとは思わない。それはまた、ラベルを混乱させる。

位置を記入している間に積み重ねられていないプロットを作成することができます。

df %>% 
    group_by(direction) %>% 
    ggvis(x=~x, y=~value, fill = ~direction) %>% 
    layer_bars(stack = FALSE) 

とにかく、あなたはそれが開発中であり、数ヶ月で更新されていないので、任意の生産作業のためggvisを避けて検討するかもしれません。

0

@shayaa おかげで、これはおそらく、いくつかの調整が必要になりますが、作業をしているように見えるんし、私はggplot2を使用していたかのようにきれいに見えるかもしれません。実際、私がggvisを使用している理由は、それを光沢と組み合わせて、小さなインタラクティブなWebバージョンを作るためです。たとえば、

df <- data.frame(
    direction=rep(c("up", "down"), each=3), 
    value=c(1:3, -c(1:3)), 
    x=rep(c("A", "B", "C"), 2)) 

plot_fct <- function(letter) { 
    df %>% 
     filter(x==letter) %>% 
     ggvis(x=~x, y=~value, fill = ~direction) %>% 
     layer_bars(stack = FALSE) %>% 
     scale_numeric("y", domain=c(NA,NA)) 
} 

ui <- fluidPage(
    sidebarPanel(
     selectInput("letter", "Choose letter", c("A", "B", "C"), selected="A") 
    ), 
    mainPanel(
     ggvisOutput("letter_barplot") 
    ) 
) 

server <- function(input, output) { 
    plot_fct(letter=reactive(input$letter)) %>% bind_shiny("letter_barplot") 
} 
runApp(shinyApp(ui, server)) 

しかし、クラス文字の反応的な問題には何らかの問題があるため、とにかく私にとってはうまくいかないようです。私はエラーを取得しておく:evalの中

エラー(代替(expr)は、ENVIR、enclos): 比較(1)

は私がしようとして維持する必要がありますねだけ原子とリストのタイプが可能です。

+0

絶対に。そしてうまくいけば、パッケージはすぐにいくつかの更新を取得します。その間、私の回答の横にあるチェックマークをクリックすると、この質問が解決されたことを示すことができます。 – shayaa