如何用echarts4r实现分面并按location为折线图着色
用echarts4r复现ggplot分面折线图(按location着色)
首先是生成目标数据框的代码:
group_size <- 20 n_groups <- 13 df <- data.frame("day" = rep(1:group_size, times=n_groups), "temperature" = runif(group_size * n_groups, 10, 40), "location" = rep(LETTERS[1:n_groups], each=group_size)) %>% mutate("other" = if_else((day %% 2) == 0, "A1", "A2"))
用户已通过ggplot实现预期效果:
df %>% ggplot()+ geom_line(aes(x= day, y = temperature, color = location))+ facet_wrap(~other)
用户尝试的echarts4r代码未达成预期,正确实现需注意按location分组映射颜色与分面的正确配置,具体代码如下:
# 自定义每个location的颜色(按需设置,若不需要固定颜色可省略) location_colors <- setNames( c("#FF5733", "#33FF57", "#3357FF", "#FF33A6", "#FFC300", "#8E44AD", "#1ABC9C", "#E74C3C", "#2ECC71", "#3498DB", "#9B59B6", "#F1C40F", "#E67E22"), LETTERS[1:13] ) df |> group_by(other, location) |> # 同时按分面字段和颜色分组字段分组 e_charts(day) |> e_line(temperature) |> e_facet(rows = 2, cols = 1, legend_pos = "top", legend_space = 12) |> # 配置分面布局 e_color(location_colors) |> # 绑定自定义颜色与location e_x_axis(name = "day") |> e_y_axis(name = "temperature")
核心要点:
- 必须同时按
other和location分组,让echarts4r识别每个分面下的不同折线组别 e_color传入颜色向量,确保每个location的颜色固定且与图例一致e_facet的rows和cols参数可调整分面排列,示例中2行1列对应ggplot的分面效果
内容的提问来源于stack exchange,提问作者Felipe
相关产品推荐
相关产品推荐

