6

嗨,我对 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))

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

谢谢你的帮助!

4

3 回答 3

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)

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

于 2014-08-04T04:38:43.897 回答
1

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

于 2014-10-02T20:55:27.750 回答
0

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

我在美国各州的暴力犯罪率上对其进行了测试(请参阅help(USArrests)),它就像一个魅力。

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

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

于 2014-08-01T21:07:44.697 回答