R-ggvis-如何标记多个平滑数据组

R-ggvis-如何标记多个平滑数据组,r,statistics,ggvis,R,Statistics,Ggvis,我有一个包含时间和键值对的数据帧,我想按键分组,然后为每个数据组显示一条平滑的线。然后我想用键来标记它。我可以做的一切,但得到的标签的基础上的关键。我看不出在文档中的什么地方可以设置这个 资料 结果 代码 您可以尝试将stroke参数添加到layer\u smooths中,该参数将根据您的分组对其进行着色,并添加图例: df %>% ggvis(~time, ~newval) %>% group_by(newcol) %>% layer_smooths(s

我有一个包含时间和键值对的数据帧,我想按键分组,然后为每个数据组显示一条平滑的线。然后我想用键来标记它。我可以做的一切,但得到的标签的基础上的关键。我看不出在文档中的什么地方可以设置这个

资料

结果

代码


您可以尝试将
stroke
参数添加到
layer\u smooths
中,该参数将根据您的分组对其进行着色,并添加图例:

 df %>% ggvis(~time, ~newval) %>% 
    group_by(newcol) %>%
    layer_smooths(stroke=~newcol) %>%
    add_axis("x", properties = axis_props(
      axis = list(stroke = "black", strokeWidth = 2),
      grid = list(stroke = "black"),
      ticks = list(stroke = "black", strokeWidth = 2),
      labels = list(angle = 45, align = "left", fontSize = 10)
    ))
产生:

如果您确实希望标记每一行,则可以使用文本标签创建一个小数据框,并将其作为附加的
层\文本进行渲染

 label_df <- df %>% group_by(newcol) %>% sample_n(1)

 df %>% ggvis(~time, ~newval) %>% 
    group_by(newcol) %>%
    layer_smooths(stroke=~newcol) %>%
    layer_text(data=label_df,
              text:=~newcol,
               baseline:="middle", fontSize:=8) %>%
    add_axis("x", properties = axis_props(
      axis = list(stroke = "black", strokeWidth = 2),
      grid = list(stroke = "black"),
      ticks = list(stroke = "black", strokeWidth = 2),
      labels = list(angle = 45, align = "left", fontSize = 10)
    ))
label\u df%group\u by(newcol)%%>%sample\n(1)
df%>%ggvis(~time,~newval)%>%
分组依据(新列)%>%
图层平滑(笔划=~newcol)%>%
图层文字(数据=标签),
文本:=~newcol,
基线:=“中等”,字体大小:=8)%>%
添加轴(“x”,属性=轴道具(
轴=列表(笔划=“黑色”,笔划宽度=2),
网格=列表(笔划=“黑色”),
刻度=列表(笔划=“黑色”,笔划宽度=2),
标签=列表(角度=45,align=“left”,字体大小=10)
))

请发布您的示例数据,我们无法对屏幕截图执行任何操作。您可以在此处获取dput()的输出无法打开那里的内容,您是否尝试过
layer_text()
?在mac上以升华文本打开没有问题-或者使用任何文本编辑器打开。现在查看图层文本。
 df %>% ggvis(~time, ~newval) %>% 
    group_by(newcol) %>%
    layer_smooths(stroke=~newcol) %>%
    add_axis("x", properties = axis_props(
      axis = list(stroke = "black", strokeWidth = 2),
      grid = list(stroke = "black"),
      ticks = list(stroke = "black", strokeWidth = 2),
      labels = list(angle = 45, align = "left", fontSize = 10)
    ))
 label_df <- df %>% group_by(newcol) %>% sample_n(1)

 df %>% ggvis(~time, ~newval) %>% 
    group_by(newcol) %>%
    layer_smooths(stroke=~newcol) %>%
    layer_text(data=label_df,
              text:=~newcol,
               baseline:="middle", fontSize:=8) %>%
    add_axis("x", properties = axis_props(
      axis = list(stroke = "black", strokeWidth = 2),
      grid = list(stroke = "black"),
      ticks = list(stroke = "black", strokeWidth = 2),
      labels = list(angle = 45, align = "left", fontSize = 10)
    ))