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

R绘图中坐标轴经纬度标签的粗体格式设置问题

解决R绘图中坐标轴经纬度标签全加粗的问题

这个问题我之前也碰到过!当用expression(bold(30~degree~N))时只有方向字母加粗,是因为plotmath对bold()的作用范围解析需要注意——你得确保所有需要加粗的元素都被包含在bold()内部,或者换一种更简单的字符串写法配合字体设置。

方案1:正确使用plotmath的bold()包裹整个表达式

把数字、度数符号和方向字母整个放在bold()里,这样整个标签都会被加粗:

par(mar=rep(6,4))
library(maps)
image(seq(-180,180,1),seq(-90,90,1),array(NA,c(length(seq(-180,180,1)),length(seq(-90,90,1)))),xlab="",ylab="",xaxt='n',yaxt='n')
map(add=T,interior=F,lwd=3)
axis(1,at=seq(-200,200),rep(NA,401),lwd.ticks=0,lwd=5)
axis(3,at=seq(-200,200),rep(NA,401),lwd.ticks=0,lwd=5)
axis(2,at=seq(-100,100),rep(NA,201),lwd.ticks=0,lwd=5)
axis(4,at=seq(-100,100),rep(NA,201),lwd.ticks=0,lwd=5)

# 修改后的坐标轴标签,全部用bold包裹整个表达式
axis(1,at=seq(-150,150,30),
     c(expression(bold(150~degree~W)),
       expression(bold(120~degree~W)),
       expression(bold(90~degree~W)),
       expression(bold(60~degree~W)),
       expression(bold(30~degree~W)),
       expression(bold(0~degree)),
       expression(bold(30~degree~E)),
       expression(bold(60~degree~E)),
       expression(bold(90~degree~E)),
       expression(bold(120~degree~E)),
       expression(bold(150~degree~E))),
     lwd.ticks = 5,cex.axis=1.1,font.axis=2,tck=.022,las=2)

方案2:使用普通字符串配合font.axis=2

如果你不想用plotmath的表达式,可以直接用带度数符号(°)的普通字符串,然后设置font.axis=2来让所有标签加粗,这种方法更直观:

par(mar=rep(6,4))
library(maps)
image(seq(-180,180,1),seq(-90,90,1),array(NA,c(length(seq(-180,180,1)),length(seq(-90,90,1)))),xlab="",ylab="",xaxt='n',yaxt='n')
map(add=T,interior=F,lwd=3)
axis(1,at=seq(-200,200),rep(NA,401),lwd.ticks=0,lwd=5)
axis(3,at=seq(-200,200),rep(NA,401),lwd.ticks=0,lwd=5)
axis(2,at=seq(-100,100),rep(NA,201),lwd.ticks=0,lwd=5)
axis(4,at=seq(-100,100),rep(NA,201),lwd.ticks=0,lwd=5)

# 使用带度数符号的字符串,font.axis=2实现全加粗
axis(1,at=seq(-150,150,30),
     c("150°W", "120°W", "90°W", "60°W", "30°W", "0°", 
       "30°E", "60°E", "90°E", "120°E", "150°E"),
     lwd.ticks = 5,cex.axis=1.1,font.axis=2,tck=.022,las=2)

为什么之前的方法不行?

  • 当你只写expression(bold(150~degree~W))时,R的plotmath解析逻辑会导致只有W被正确加粗,把整个表达式放进bold()里就能避免这个问题。
  • par(font=2)和font.axis=2对expression()生成的文本优先级低于表达式内部的格式设置,所以单独设置这些参数无法覆盖expression里的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:14:58