使用ggvis记录比例和限制

时间:2014-08-01 20:02:40

标签: r ggvis

嗨,我对ggvis中的音阶感到有些困惑。 我正在尝试做两件事:一件是对数刻度(相当于plot()中的log =“x”)。我也在寻找相当于xlim = c()的东西。在这两种情况下,下面的代码都没有给出预期的结果。

# install.packages("ggvis", dependencies = TRUE)
library(ggvis)
df <- data.frame(a=c(1, 2, 3, 1000, 10000), b=c(0.1069, 0.0278, 0.0860, 15.5640, 30.1745))
df %>% ggvis(~a, ~b)
df %>% ggvis(~a, ~b) %>% scale_numeric("x", trans="log")

请注意,使用trans =“log”时,所有点都位于绘图的左侧,并且刻度消失。

接下来,我想将绘图限制为某些值。我可以对数据框进行子集化,但我希望从plot()获得相当于xlim的数据。

df %>% ggvis(~a, ~b) %>% scale_numeric("x", trans="linear", domain=c(10, 40))

这甚至给出了更奇怪的结果,所以我猜我可能会错误解释域的作用。

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

我遇到了你提到过的同样问题。

显然,ggvis的开发人员也注意到了这个错误。目前这是一个问题。您可以在此处找到问题:https://github.com/rstudio/ggvis/issues/230

在您的问题中:

# install.packages("ggvis", dependencies = TRUE)
library(ggvis)
df <- data.frame(a=c(1, 2, 3, 1000, 10000), b=c(0.1069, 0.0278, 0.0860, 15.5640, 30.1745))
df %>% ggvis(~a, ~b)

# Points will disapper
df %>% ggvis(~a, ~b) %>% scale_numeric("x", trans="log")
# Should work
df %>% ggvis(~a, ~b) %>% scale_numeric("x", trans="log", expand=0)

但是,您可能会注意到,在转换之后,刻度之间的间距看起来并不均匀。但至少正确渲染了这些点。

答案 1 :(得分:1)

我遇到了同样的问题并注意到,一旦我从我的数据中删除了0个数据点(无法计算log())一切都开始正常工作。

答案 2 :(得分:0)

这很奇怪,我现在用你的数据尝试过很多东西,但找不到问题。

我在美国国家的暴力犯罪率上测试了它(见help(USArrests)),它就像一个魅力。

data(USArrests)
# str(USArrests)
p <- USArrests %>% ggvis(~ Murder, ~ Rape) %>% layer_points()
p %>% scale_numeric("y", trans = "log")

这不是答案,只是与您分享。