如何用e_charts从DataFrame正确绘制多个并排仪表盘图?
用echarts4r实现一行三个仪表盘的正确方法
你的代码问题在于:e_gauge 默认只能处理单个数值与名称,直接传入整个向量会把所有数值叠加到同一个仪表盘上;同时 e_facet 仅适用于常规图表系列(如柱状图、折线图)的分面,无法对仪表盘组件生效。
以下是两种可行的实现方式:
方法1:使用 purrr 批量生成 + e_grid 布局
适合数据量较多的情况,通过循环批量生成每个仪表盘,再用网格布局排列:
library(echarts4r) library(purrr) df <- data.frame(group = c("A", "B", "C"), value = c(57, 23, 65)) # 定义生成单个仪表盘的函数 create_gauge <- function(title, value) { e_charts() |> e_gauge(value, title) } # 批量生成并组合成1行3列的布局 df |> pmap(list(title = group, value = value), create_gauge) |> e_grid(rows = 1, cols = 3)
方法2:手动逐个添加仪表盘 + e_grid 布局
适合数据量较少的场景,直接逐个定义仪表盘后用网格排列:
library(echarts4r) df <- data.frame(group = c("A", "B", "C"), value = c(57, 23, 65)) e_charts() |> e_gauge(df$value[1], df$group[1]) |> e_gauge(df$value[2], df$group[2]) |> e_gauge(df$value[3], df$group[3]) |> e_grid(rows = 1, cols = 3)
核心逻辑是用 e_grid 替代 e_facet,e_grid 专门用于在同一画布上排列多个独立的图表组件,能精准控制行列布局。
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

