2

我在用 R 在 x 轴上绘制不均匀比例图时遇到问题

这是一个例子:

plot(1:100,1:100)

将在 x 轴上给出相等的刻度空间。

但是,我想显示图形的前半部分空间显示 1 到 10,左半部分空间显示 10 到 100,因此 10 到 100 中的点更密集,并且1:10更容易看到。如何用 R 做到这一点?

像这样:

在此处输入图像描述

4

3 回答 3

2

你可以logx轴:

x<-1:100
y<-1:100
plot(log(x,base=10),y,axes=F)
axis(2)
axis(1,at=0:2,labels=10^(0:2))

在此处输入图像描述

于 2012-11-05T18:48:31.110 回答
2

对于对数轴,使用:

plot(x,y,log="x")  ## specifies which axis to put on log scale

要确定要使用多少个“刻度线”,请检查

par()$lab

默认为5,5,7。要放置更多 x 轴标签,请执行

par(lab=c(10,5,7))

对于 y:

par(lab=c(5,10,7))
于 2012-11-05T18:51:14.440 回答
2

这不是一件容易一次性完成的任务。您实际上需要转换为缩放数据并提供自定义刻度轴。您有什么理由不考虑简单地记录 x 轴吗?(提供选项plot(x, y, log='x')将做到这一点)。

我想你描述的是这样的:

xnew <- ifelse(x<10, x, x/10)
plot(xnew, y, axes=FALSE, xlab='x')
axis(1, at=c(0, 10, 20), labels=c(0, 10, 100))
axis(2)
box()
于 2012-11-05T18:51:42.780 回答