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

R语言绘图求助:X轴双列分正负网格展示数据

在R中实现X轴正负区域分别展示Local/Remote Number的散点图

核心思路是将Remote Number取负值后映射到X轴负区域,同时调整X轴刻度显示为原正数,以此实现“正网格放Local,负网格放Remote”的效果。以下是用ggplot2实现的完整方案:

1. 构造示例数据(可替换为你的真实数据)

df <- data.frame(
  Footprint = c(10, 15, 20, 25, 30),
  Local_Number = c(5, 8, 12, 15, 20),
  Remote_Number = c(3, 6, 9, 14, 18),
  Location = c("A", "B", "C", "D", "E")
)

2. 完整绘图代码

library(ggplot2)

ggplot() +
  # 绘制Local Number散点(X轴正区域)
  geom_point(data = df, aes(x = Local_Number, y = Footprint), color = "#2E86AB", size = 3) +
  # 绘制Remote Number散点(X轴负区域,数值取反)
  geom_point(data = df, aes(x = -Remote_Number, y = Footprint), color = "#F24236", size = 3) +
  # 添加Location标签,避免与点重叠
  geom_text(data = df, aes(x = Local_Number, y = Footprint, label = Location), hjust = -0.3, size = 4) +
  geom_text(data = df, aes(x = -Remote_Number, y = Footprint, label = Location), hjust = 1.3, size = 4) +
  # 调整X轴刻度:负刻度显示为原正数
  scale_x_continuous(
    breaks = seq(-20, 20, by = 5),
    labels = c("20", "15", "10", "5", "0", "5", "10", "15", "20")
  ) +
  # 轴标题与图表标题
  labs(
    x = "Remote Number (左) | Local Number (右)",
    y = "Footprint",
    title = "Footprint vs Local/Remote Number"
  ) +
  # 优化网格与主题
  theme_minimal() +
  theme(
    panel.grid.major.x = element_line(color = "#DDDDDD", linetype = "dashed"),
    panel.grid.major.y = element_line(color = "#DDDDDD")
  )

3. 关键细节说明

  • 正负区域映射:通过-Remote_Number将Remote数据转到X轴负半轴,与正半轴的Local数据形成对称布局
  • 刻度适配:如果你的数据范围不固定,可自动生成刻度:
    max_val <- max(df$Local_Number, df$Remote_Number)
    breaks <- seq(-max_val, max_val, by = 5)
    labels <- abs(breaks)
    
    # 替换scale_x_continuous部分即可
    scale_x_continuous(breaks = breaks, labels = labels)
    
  • 标签位置:通过hjust参数控制标签与散点的距离,避免重叠,Local标签在点右侧,Remote标签在点左侧

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:31:03