如何使ggvis图例与图形匹配?

时间:2016-04-19 13:18:35

标签: r ggvis

我创建了一个函数,它使用ggvis来绘制我们定期检查的一些数据。在这个,最后一组,"整体"被覆盖显示为宽度为3而不是默认值的黑线。不幸的是,我用来覆盖默认值的步骤没有显示在图例中。我不确定如何做到这一点。我试图专门调用add_legend,但这不起作用。

S.O. Line Graph

用于生成此代码的代码(也包含一些随机数据):

php artisan migrate

哪个应该生成如下所示的内容。我唯一关心的是如何制作传奇节目'整体'同样是黑色。

enter image description here

1 个答案:

答案 0 :(得分:1)

使用scale_nominal并提供range,您可以在图片和图例中设置颜色。

在您的简单示例中,这就像添加一样简单,例如: scale_nominal("stroke", range = c("blue", "orange", "black")) 到你的绘图代码的末尾。

听起来群体的数量可能会有所不同。但是,Overall组始终按顺序排列(或者您通过factor将其设置为最后一个),您可以使用与上述类似的内容并使其成为您的功能的一部分。在这种情况下,您需要建立一个您喜欢(并且不包含黑色)的调色板,该调色板具有足够的颜色供您的所有组使用。

在这里,我将使用Cookbook for R以8种不同的颜色拍摄其中一个调色板。

cbPalette = c("#999999", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")

我们可以使用分组因子的级别数来从特定数据集的调色板中提取所需的颜色数。所需的颜色数量减去1,因为最后一个颜色总是黑色。

这是计算需要着色的组数减1的一种方法。

ncol = nlevels(data[["CT_DS"]]) - 1

此信息可用于从cbPalette中拉出前1到“级数减1”颜色。

pal = cbPalette[1:ncol]

这可以用于range的{​​{1}}参数,将scale_nominal附加到矢量的末尾。

"black"

此过程很容易添加到您的功能中。

scale_nominal("stroke", range = c(pal, "black"))

enter image description here