2

刚开始ggvis。恐怕不是一个特别有趣或普遍的问题,但对我来说如何将size属性添加到一行并不明显。特别是,我将如何使用复制以下情节ggvis

library(ggplot2)

df <- data.frame(
  id = c(1,1,1,2,2,2,2),
  x  = c(1,2,3,1,2,3,4),
  y  = c(2,3,4,1,1,2,3)
)

ggplot(df, aes(x, y, colour = as.factor(id), size = id)) +
  geom_line()

另外,有足够高声誉的人可以创建ggvis标签吗?干杯。

4

1 回答 1

4

以下:

library(ggvis)

gg <- ggvis(df, props(~x, ~y, stroke = ~factor(id)))
gg <- gg + layer_line(props(strokeWidth := ~id*4))
gg

产生:

阴谋

我不得不调整乘数以strokeWidth使其更厚一些,但这对你来说应该是一个很好的起点。记住ggivs是基于Vega的,所以熟悉新图形语法中的术语几乎是理解如何“思考”的必要条件ggvis

这是一个更正确地执行此操作的示例(并且更像ggplot2scale_quantitative

gg <- ggvis(df, props(~x, ~y, stroke = ~factor(id)))
gg <- gg + layer_line(props(strokeWidth = ~id)) 
gg <- gg + scale_quantitative("strokeWidth",
                              trans="linear", 
                              domain=range(df$id), 
                              range=c(1,10))
gg

平方

做一个?scale_quantitative或查看“秤”在线示例应该可以让您很好地了解获得所需效果的选项。

我还应该指出第二个示例中“ =”与“ ”的使用。:=ggvis网站:

props() 函数使用 = 操作进行映射(缩放),使用 := 操作进行设置(未缩放)。它还使用 ~ 运算符来指示应在数据中计算表达式(在 ggvis 中,数据可以更改);如果没有 ~ 运算符,表达式会立即在当前环境中求值。

于 2014-03-22T21:09:55.317 回答