You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在echarts4r中基于含缺失值的不完整数据绘制连续折线?

解决echarts4r中含NA值的折线不连续问题

针对该场景,在echarts4r里可以通过子集化非NA数据或者拆分数据结构两种方式解决NA导致折线断裂的问题,具体实现如下:

方法1:在e_line中直接传入子集化数据

echarts4r的e_line()支持单独指定data参数,直接传入剔除Temp列NA值后的数据集,即可画出连续的体温折线,同时保留疼痛柱状图的完整数据:

library(echarts4r)

# 示例数据(固定随机种子保证可复现)
set.seed(123)
df <- data.frame(
  Hour = 0:12, 
  Pain = sample(7:10, 13, TRUE), 
  Temp = c(36.8,rep(NA,3),37.2,rep(NA,3),37.4,rep(NA,3),37.0)
)

# 绘制双轴图表
df |>
  e_chart(Hour) |>
  e_bar(Pain, name = "疼痛评分") |>
  # 仅传入Temp非NA的行数据绘制折线
  e_line(Temp, name = "体温", data = df[!is.na(df$Temp), ]) |>
  # 配置左侧Y轴(疼痛评分)
  e_y_axis(name = "疼痛评分") |>
  # 配置右侧Y轴(体温)
  e_y_axis(
    name = "体温",
    index = 1,
    min = 36, max = 38
  ) |>
  e_legend()

方法2:拆分数据结构(逻辑更直观)

将疼痛数据和体温数据拆分为两个独立数据框,分别传入对应的图表函数,避免数据混合导致的NA干扰:

# 拆分数据
pain_df <- df[, c("Hour", "Pain")]
temp_df <- df[!is.na(df$Temp), c("Hour", "Temp")]

# 绘制图表
pain_df |>
  e_chart(Hour) |>
  e_bar(Pain, name = "疼痛评分") |>
  e_line(data = temp_df, Temp, name = "体温") |>
  e_y_axis(name = "疼痛评分") |>
  e_y_axis(name = "体温", index = 1, min = 36, max = 38) |>
  e_legend()

两种方法的核心逻辑与ggplot一致:让折线仅基于有有效数据的行绘制,从而实现连续折线效果。

内容的提问来源于stack exchange,提问作者Articolours

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:45:21