在绘制直方图、散点图和其他在 R 中将轴缩放为对数刻度的图时,如何使用 10^-1 10^0 10^1 10^2 10^3 等标签而不是显示的轴只是 -1, 0, 1, 2, 3 等。应该在 hist()、plot() 等命令中添加哪些参数?
问问题
23290 次
3 回答
22
除了 ggplot2 的解决方案(见 gsk3 的评论),我想补充一点,当使用正确的参数时,这也会在 plot() 中自动发生,例如:
x <- 1:10
y <- exp(1:10)
plot(x,y,log="y")
您可以将参数log="x"
用于 X 轴,或log="xy"
同时用于两者。
如果你想格式化数字,或者你有日志格式的数据,你可以使用axis()来做一个解决方法。一些有趣的功能:
axTicks(x)
为您提供 X 轴 (x=1) 或 Y 轴 (x=2) 上的刻度位置bquote()
将表达式转换为语言,但可以将变量替换为其值。有关R 中绘图标签中的乳胶和变量bquote()
问题的更多信息?.as.expression()
使语言对象来自bquote()
表达式。这允许axis()
按照?plotmath
. 它不能对语言对象这样做。
一个很好的格式示例:
x <- y <- 1:10
plot(x,y,yaxt="n")
aty <- axTicks(2)
labels <- sapply(aty,function(i)
as.expression(bquote(10^ .(i)))
)
axis(2,at=aty,labels=labels)
这使
于 2011-08-01T11:21:18.650 回答
15
这是绘制此类轴的另一种方法:
plot(NA, xlim=c(0,10), ylim=c(1, 10^4), xlab="x", ylab="y", log="y", yaxt="n")
at.y <- outer(1:9, 10^(0:4))
lab.y <- ifelse(log10(at.y) %% 1 == 0, at.y, NA)
axis(2, at=at.y, labels=lab.y, las=1)
编辑:这也解决latticeExtra
了scale.components
于 2016-02-05T15:17:12.873 回答
2
在 ggplot2 你可以添加一个
... +
scale_x_log10() +
scale_y_log10(limits = c(1e-4,1), breaks=c(1e-4,1e-3,1e-2,0.1,1)) + ...
缩放您的轴,标记它们并添加自定义中断。
于 2015-05-15T09:07:56.680 回答