ggvis 彩色折线图和相应的图例

Posted

技术标签:

【中文标题】ggvis 彩色折线图和相应的图例【英文标题】:ggvis color line graphs and corresponding legend 【发布时间】:2016-10-11 12:42:55 【问题描述】:

我正在通过设置 stroke 和 strokeDash 参数来绘制具有不同颜色和线型的 ggvis 图形。 颜色没有显示我想要的,例如:我需要“红色”、“蓝色”和“绿色”颜色,其中显示的颜色是“蓝色”、“橙色”和“绿色”。(代码示例和屏幕截图是下面)。

我还需要根据颜色和线型添加图例。我无法添加结合“颜色类型”(笔划)和“线条类型”(笔划Dash)的图例。

下面是我正在工作的示例代码。

mydf <- data.frame(xval = c(1:5),USA = c(11:15), Canada = c(21:25), UK = c(31:35))

mydf2 <- tidyr::gather(mydf, 'var', 'val', -xval)

mydf2$mycol <- c(rep("Red",5), rep("Blue",5), rep("Green",5))
mydf2$mydash <- c(rep(5,5), rep(-1,5), rep(10,5))

myggv2 <- mydf2 %>% ggvis(x = ~xval, y = ~val, stroke = ~mycol,      
strokeDash := ~mydash) %>% layer_points(size := 100) %>%
add_tooltip(function(d)  paste0("x:", d$xval, "<br>", "y:", d$val) , "hover") %>% group_by(var) %>% 
layer_paths() %>% add_axis("x", title = "qtrs") %>% 
  add_axis("y", title = "MEV")%>% hide_legend("stroke")
myggv2

这是图表的截图。Screenshot

谢谢

【问题讨论】:

对于主要颜色问题,您只是缺少:= 来设置颜色而不是地图颜色。查看答案here。不过,如果我想要一个图例,我可能会将var 映射到笔划,然后使用scale_nominal 更改颜色。当前没有可用的strokeDash 图例。见here。 感谢@aosmith 的建议。你能写下相同的代码吗?我还是 ggvis 绘图的新手。 【参考方案1】:

您可以使用scale_nominal 更改离散变量的绘图和图例中的颜色。

在这种方法中,您可以在绘图代码的图例中映射您想要的变量,然后使用您选择的颜色更改默认颜色。在此示例中,我将 var 用于 stroke 变量。

mydf2 %>%
    ggvis(x = ~xval, y = ~val, stroke = ~var,      
          strokeDash := ~mydash) %>% 
    layer_points(size := 100) %>%
    add_tooltip(function(d)  paste0("x:", d$xval, "<br>", "y:", d$val) , "hover") %>% 
    group_by(var) %>% 
    layer_paths() %>% 
    add_axis("x", title = "qtrs") %>% 
    add_axis("y", title = "MEV") %>%
    scale_nominal("stroke", label = "Country", range = unique(mydf2$mycol))

请注意,此时 ggvis 不支持 strokeDash 图例。见this open github issue。

【讨论】:

以上是关于ggvis 彩色折线图和相应的图例的主要内容,如果未能解决你的问题,请参考以下文章

Google 折线图图例显示名称

ecahrt折线图图例换页展示

ChartJS 版本 3 - 多个折线图的常用图例

多折线图 d3 v6 的 SVG 图例

echarts图表——折线图&饼图

MATLAB | 分段赋色折线图及其图例绘制