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

R语言散点图坐标轴百分比设置及图例不显示问题求助

R语言散点图问题解决:百分比刻度+图例显示

一、设置坐标轴为百分比格式

不管是Y轴还是X轴,核心是自定义刻度标签,步骤如下:

  • 绘图时先关闭默认坐标轴(axes=FALSE),同时设置好轴的显示范围(xlim/ylim)
  • 用axis()函数手动绘制坐标轴,通过labels参数把刻度文本改成带%的格式
  • 按需用mtext()添加坐标轴标题

比如你的数据里Y轴要显示20%、30%…60%,就把刻度位置设为20、30等数值,标签用paste0(seq(20,60,10), "%")生成;X轴设置逻辑完全一致。

二、修复图例不显示的问题

你的图例看不到是因为设置的位置(1,95)超出了当前Y轴的范围(Y轴最大值只有60),被画到了图外面。两种解决方法:

  • 用位置关键词设置,比如"topright"、"bottomleft",R会自动把图例放在对应角落,不会超出绘图区域
  • 根据数据范围自定义坐标,比如(50,55),这个位置在散点右上方,不会被截断

三、完整修正代码

dose  <- c(20, 30, 40, 45, 60)
drugA <- c(16, 20, 27, 40, 60)
drugB <- c(15, 18, 25, 31, 40)

# 关闭默认坐标轴,提前设置轴范围
plot(dose, drugA, col='blue', lty=1, axes=FALSE, xlim=c(20,60), ylim=c(15,60), xlab="剂量", ylab="效果")
points(dose, drugB, col='red', lty=2)

# 绘制带百分比的Y轴
axis(2, at=seq(20,60,10), labels=paste0(seq(20,60,10), "%"))
# 绘制带百分比的X轴(不需要的话删掉此行)
axis(1, at=seq(20,60,10), labels=paste0(seq(20,60,10), "%"))

# 用关键词定位图例,避免超出范围
legend("topright", legend=c("Drug A", "Drug B"),
       col=c("blue", "red"), lty=1:2, cex=0.8)
# 也可以用自定义坐标:legend(50,55, legend=c("Drug A", "Drug B"), col=c("blue", "red"), lty=1:2, cex=0.8)

grid(lty=1)

代码说明

  • axes=FALSE:关闭默认坐标轴,方便我们完全自定义刻度
  • axis(2,...):side=2代表左侧Y轴,at指定刻度在数值上的位置,labels设置显示的百分比文本
  • 如果不需要X轴的百分比格式,直接删掉axis(1,...)这一行,改用axis(1)显示默认刻度即可

内容的提问来源于stack exchange,提问作者A lover of learning

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:51:31