ggvis:将size属性添加到一行

时间:2014-03-22 19:34:54

标签: r ggplot2 ggvis

刚开始使用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代码吗?欢呼声。

1 个答案:

答案 0 :(得分:4)

以下内容:

library(ggvis)

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

产生

plot

我不得不调整strokeWidth的乘数来使它更厚一点,但这应该是一个很好的起点。请记住ggivs基于Vega,因此熟悉新图形语法中的术语几乎是了解如何在{{1中“思考”的要求}}

以下是更恰当地执行此操作的示例(以及更多ggvis - 与ggplot2类似:

scale_quantitative

sq

执行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 或查看"scales" online examples应该会让您了解获得所需效果的选项。

我还应该指出在第二个例子中使用“?scale_quantitative”vs“=”。来自:=网站:

  

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