ggvis - 自定义非数字y轴标签,显示为' NaN'

时间:2016-08-18 19:58:55

标签: r ggvis

编辑:使用更复杂的示例

更新示例代码

我有一个数据框,其中包含(x,y)值和每对的名称,我将其绘制在ggvis散点图中。 SO用户已经向我指了这篇文章(How do I label plot tick marks using ggvis),并通过使用factor()创建自定义y轴标签列表ylabels_来更新我的代码以反映我在那里看到的内容根据{{​​1}}声明提供给values =。这是新代码:

add_axis()

我的轴标签仍然以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_) 而不是因素返回。我错过了什么吗?

解决方案编辑:这是我最终开始工作的代码。注意我将x值更改为交错,因此我可以区分这三行。

NaN

我不明白为什么在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") 部分我不得不颠倒他们以正确顺序显示的因素的顺序。如果有人对此有任何见解,那将非常有帮助!

2 个答案:

答案 0 :(得分:1)

请注意,在链接的答案中,新的因子变量用作y变量。您也可以将它用于values,但不一定需要它。

根据y制作新因素,但使用name作为标签,可以按照正确的绘图顺序获取name变量。

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

由于您现在正在y轴上使用因子变量,因此需要明确使用layer_points

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

请注意,只有原始y数据为整数时,此方法才有效。

答案 1 :(得分:0)

称我为傻瓜,但我称这是一个错误(BTW,没有回答你的问题):

## 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)))