2016-08-18 3 views
3

EDITとして示すカスタム非数値y軸ラベル:より複雑な例で更新サンプルコードggvis - 「のNaN」

I(x、y)は、値を有するデータフレームとそれぞれの名前を持っています私はそれをggvis散布図にプロットしています。 SOユーザーはすでにこの投稿(How do I label plot tick marks using ggvis)を指摘しており、factor()を使用してadd_axis()ステートメントのに送られるカスタムY軸ラベルylabels_のリストを作成することで、私がそこに見た内容を反映するようにコードを更新しました。ここでは新しいコードは次のとおりです。

library(stringi) 
require(ggvis) 

set.seed(13) 
df <- data.frame(x = 1:15, 
       y = c(rep.int(1, 15), 
         rep.int(4, 15), 
         rep.int(7, 15))) 

ylabels_ <- factor(c(1,4,7), labels = stri_rand_strings(3, 7)) 

df %>% 
    ggvis(~x, ~y) %>% 
    add_axis("y", values = ylabels_) 

マイ軸ラベルは、まだ代わりの要因NaNに戻って来ています。何か不足していますか?

解決策編集:ここに私のコードがあります。注:私は3つの線を区別できるように、x値をずらすように変更しました。

library(stringi) 
require(ggvis) 

set.seed(13) 
df <- data.frame(x = c(seq(1, length.out = 15, by = 3), 
         seq(2, length.out = 15, by = 3), 
         seq(3, length.out = 15, by = 3)), 
       y = factor(c(rep.int(1, 15), 
         rep.int(4, 15), 
         rep.int(7, 15)), labels = c("one", "four", "seven"), 
         ordered = T)) 

df %>% 
    ggvis(~x, ~y) %>% 
    layer_points() %>% 
    scale_ordinal("y", domain = c("seven", "four", "one") 

domain =部分で、私は彼らが正しい順序で表示するための要素の順序を逆にしなければならなかった理由を私は理解していません。誰かがそれについての洞察を持っているなら、それは非常に役に立つでしょう!

答えて

1

お知らせy変数。 valuesにも使用できますが、必ずしも必要ではありません。

yに基づいて新しい要素を作成するが、nameをラベルとして使用すると、nameの変数が正しい順序でプロットされます。あなたは今、y軸上の因子変数を使用して作業しているので

df$ylabels_ <- factor(df$y, labels = stri_rand_strings(3, 7)) 

は、layer_points明示的に使用する必要があります。元yデータが整数である場合は、この全体的なアプローチだけで動作することを

df %>% 
    ggvis(~x, ~ylabels_) %>% 
    layer_points() 

は注意してください。

+0

私が与えた例はあまりにも単純です - 改訂された例を投稿するつもりです –

+0

@JonathanH If問題はy値を繰り返すため、スタンドアロンのベクトルを作成するのではなく、新しい変数をデータセットに入れてください。しかし、連続変数に関する私の注記のように、この要因は「連続的な」間隔の代わりに等間隔の間隔につながります。 – aosmith

+1

私はコードにさらに多くの変更を加えましたが、あなたの答えは私が必要な場所に私を連れて行くのを助けました! –

0

馬鹿私を呼び出して、私は(ところで、あなたの質問に答えるされていない、)バグこれを呼んでいる:リンクの答えに、新しい因子変数は次のように使用されていること

## set up data 
lab <- factor(1:15, labels=stri_rand_strings(15, 7)) 
val <- 1:15 

## all works according to expectations on the "x" axis 
data.frame(xx=lab, yy=val) %>% 
    ggvis(~xx, ~yy) %>% 
    layer_points() %>% 
    add_axis("x", values=lab, 
      properties=axis_props(labels=list(angle=90, fontSize = 10))) 

## nothing works according to expectations on the "y" axis 
## attempt 1 
data.frame(xx=val, yy=lab) %>% 
    ggvis(~xx, ~yy) %>% 
    layer_points() %>% 
    add_axis("y", values=lab, 
      properties=axis_props(labels=list(angle= 0, fontSize = 10))) 

## attempt 2 
data.frame(xx=val, yy=as.numeric(val)) %>% 
    ggvis(~xx, ~yy) %>% 
    layer_points() %>% 
    add_axis("y", values=lab, 
      properties=axis_props(labels=list(angle= 0, fontSize = 10))) 
+0

あなたがそれを記述したときの問題は本当にわかりませんが、私にとってはうまくいくとわかった解決策は上記の通りです –