我有一个简单的情节:
#!/usr/bin/Rscript
png('plot.png')
y <- c(102, 258, 2314)
x <- c(482563, 922167, 4462665)
plot(x,y)
dev.off()
R对y轴使用500,1000,1500等。有没有办法可以在y
轴上使用科学记数法,并将* 10^3
放在轴的顶部,如下图所示?
答案 0 :(得分:9)
类似的技术是使用sfsmisc包中的eaxis
(扩展/工程轴)。
它的工作原理如下:
library(sfsmisc)
x <- c(482563, 922167, 4462665)
y <- c(102, 258, 2314)
plot(x, y, xaxt="n", yaxt="n")
eaxis(1) # x-axis
eaxis(2) # y-axis
答案 1 :(得分:3)
这有点像hacky,但它并没有错:
plot(x,y/1e3, ylab="y /10^3")
答案 2 :(得分:2)
如何将标签放到轴上取决于使用的绘图系统。(base,ggplot2或lattice)
您可以使用scales
包中的函数来格式化轴编号:
library(scales)
x <- 10 ^ (1:10)
scientific_format(1)(x)
[1] "1e+01" "1e+02" "1e+03" "1e+04" "1e+05" "1e+06" "1e+07" "1e+08" "1e+09" "1e+10"
这是使用ggplot2
:
library(ggplot2)
dat <- data.frame(x = c(102, 258, 2314),
y = c(482563, 922167, 4462665))
qplot(data=dat,x=x,y=y) +
scale_y_continuous(label=scientific_format(digits=1))+
theme(axis.text.y =element_text(size=50))
编辑 OP有特定需求。这里有一些我在这里使用的想法是为了实现这个目标:
axis
功能自定义地图标签。mtext
将文字放在外部地块区域
y <- c(102, 258, 2314)
x <- c(482563, 922167, 4462665)
plot(x,y,ylab='',yaxt='n')
mtext(expression(10^3),adj=0,padj=-1,outer=FALSE)
axis(side=2,at=y,labels=round(y/1000,2))