嗨,我对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))
这甚至给出了更奇怪的结果,所以我猜我可能会错误解释域的作用。
感谢您的帮助!
答案 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")
这不是答案,只是与您分享。