如何让R语言image函数绘制的图像刻度线向内显示?
解决R中image函数刻度线向内且移除默认向外刻度的问题
我之前也碰到过一模一样的情况!当你手动添加向内刻度时,image()函数默认的向外刻度并没有被覆盖,所以就出现了两种刻度叠加的问题。这里有两种简单的解决方案:
方法1:关闭默认坐标轴,手动绘制向内刻度
直接在image()里禁用默认的坐标轴,然后用axis()函数自定义向内的刻度线:
# 绘制图像时关闭默认坐标轴 image(1:dim(imn2223J)[1], 1:dim(imn2223J)[2], imn2223J, zlim=c(-8,15), asp=1, col=rev(rainbow(100)), xlab= "X - Arcsec", ylab="Y - Arcsec", cex.lab=2.5, cex.axis=2.5, axes=FALSE) # 手动添加向内的坐标轴刻度(tck为负数表示向内) axis(1, tck=-0.02, cex.axis=2.5) # 底部X轴 axis(2, tck=-0.02, cex.axis=2.5) # 左侧Y轴 box() # 补上图像边框
方法2:全局设置刻度方向
通过par()函数提前设置tck参数为负数,让所有后续绘图的刻度默认向内,这样image()的默认刻度就直接是向内的,不需要额外操作:
# 设置全局刻度向内(tck绝对值控制刻度长度,负数=向内) par(tck=-0.02) # 执行你的image绘图命令,此时刻度默认向内 image(1:dim(imn2223J)[1], 1:dim(imn2223J)[2], imn2223J, zlim=c(-8,15), asp=1, col=rev(rainbow(100)), xlab= "X - Arcsec", ylab="Y - Arcsec", cex.lab=2.5, cex.axis=2.5)
小提示
tck的取值:绝对值越大,刻度线越长;负数代表向内,正数代表向外,你可以根据需求调整数值(比如-0.03会让刻度更明显)。- 如果用方法2,之后要恢复默认刻度的话,执行
par(tck=NA)即可回到R的默认设置。
内容的提问来源于stack exchange,提问作者Henri Plana
相关产品推荐
相关产品推荐

