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

在echarts4r散点图中,能否为离散X轴添加水平抖动?

在echarts4r散点图中为离散X轴添加水平抖动的实现方法

可以实现水平抖动,但echarts4r的jitter_amount参数默认仅对Y轴生效,要实现离散X轴的水平抖动,需要手动处理数据的X轴映射,具体步骤如下:

解决方案思路

离散X轴在ECharts底层会被转换为数值刻度,我们可以先将离散的X值转为对应的数值索引,给这些数值添加随机抖动后,再通过轴标签格式化把显示还原为原来的离散值。

代码示例

1. 处理数据,添加带抖动的X轴数值

library(echarts4r)
library(tidyverse)

df <- tibble(x = c("a", "a", "b", "b", "c", "c"),
             y = c(1, 2, 3, 3, 4, 5),
             z = c(1, 2, 3, 3, 4, 5))

# 将离散x转换为数值索引,并添加水平抖动(抖动范围可自行调整)
df_jitter <- df |>
  mutate(x_num = as.integer(factor(x))) |> # 把a/b/c映射为1/2/3
  mutate(x_jitter = x_num + runif(n(), min = -0.2, max = 0.2)) # 添加±0.2范围内的随机抖动

2. 绘制带水平抖动的散点图

df_jitter |>
  e_charts(x_jitter) |>
  e_scatter(y, symbol_size = 15) |>
  e_scatter(z, symbol_size = 15, symbol = "diamond") |>
  e_color(c("red", "blue")) |>
  # 配置X轴,还原离散标签显示
  e_x_axis(
    formatter = JS("function(value) {
      const labels = ['a', 'b', 'c']; // 对应原数据的离散X值
      return labels[Math.round(value) - 1];
    }"),
    axisTick = list(alignWithLabel = TRUE), # 刻度与标签对齐
    interval = 1, # 刻度间隔为1
    min = 0.5, max = 3.5 # 调整轴范围,避免抖动点超出显示
  )

说明

  • 抖动范围可以通过调整runif()的min和max参数来控制,比如改成±0.3会让抖动更明显。
  • 如果离散X值更多,只需要修改formatter里的labels数组,对应原数据的所有X类别即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:57:21