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

R语言plotrix绘制时间序列图时如何设置x轴不等间隔刻度

plotrix绘图实现x轴不等间隔(压缩1975-1989年区间间距)方案

核心逻辑:R基础绘图框架的坐标轴默认是坐标位置和数值线性绑定的,无法直接修改某一段的轴间距,最稳妥的实现方式是先对年份做自定义坐标映射,压缩目标区间的坐标单位长度,绘图完成后再把坐标轴标签替换为真实年份即可,不会出现折线和刻度错位的问题。

具体实现步骤

  • 第一步:生成自定义映射的x轴坐标
    按区间给每个年份分配对应的绘图坐标值,1975年之前、1989年之后的年份保持1年对应1个坐标单位的正常间隔,1975-1989年区间按你需要的比例压缩单位长度(示例里压缩为原间距的20%,可自行调整系数):
    # 读取数据
    a <- read.csv("DataSt.csv")
    # 生成自定义x坐标
    a$x_pos <- ifelse(
      a$Year < 1975,
      # 1975年之前:正常间隔
      a$Year - min(a$Year),
      ifelse(
        a$Year >=1975 & a$Year <=1989,
        # 1975-1989年:按比例压缩,修改0.2即可调整压缩程度,值越小间距越窄
        (1975 - min(a$Year)) + (a$Year - 1975)*0.2,
        # 1989年之后:恢复正常间隔
        (1975 - min(a$Year)) + (1989-1975)*0.2 + (a$Year - 1989)
      )
    )
    
  • 第二步:用自定义坐标绘图
    把原代码中传入clplot的x参数替换为生成的x_pos列,保持关闭默认坐标轴的设置:
    library(plotrix)
    my_colors1 <- c("red", "green","blue")
    y <- a$TP
    clplot(a$x_pos, y, main="", lwd=5, labels=y, levels=c(37,964,4377),
           col=my_colors1, showcuts=T, bty="n", xlab="Year", ylab = "numbers", axes=F)
    
  • 第三步:手动添加匹配的坐标轴
    x轴的刻度位置传入自定义的x_pos值,标签对应真实年份,y轴保持原有设置即可:
    # 绘制不等间隔x轴
    axis(1, at = a$x_pos, labels = a$Year, las=2)
    # 绘制y轴
    axis(2, at = seq(0, 4400, by = 100), las=2)
    

注意事项

  • 不要尝试仅修改axis()函数的at参数实现间距调整,这种方式只会移动刻度标签的位置,不会改变折线本身的坐标映射,会导致折线和刻度完全错位。
  • 如果需要添加辅助线、标注等元素,x轴位置要传入对应点的x_pos值,才能和图上位置匹配。
  • 1975-1989区间的压缩系数可按需调整,数值越小该段的轴间距越窄。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:15:40