R:在对数x轴上绘制未转换的数据(类似于在对数图纸上绘图)

时间:2012-08-13 15:50:27

标签: r plot logarithm

我有3组数据,我试图在一个图上绘制。第一个数据集x值的范围从1到1700,而其他两个数据集的x值小于20.因此,我想在对数轴上绘制它们以显示所有数据集的变化。但是我不想转换数据,因为我希望能够从图形中读取值。我想要的x轴标签是1,10,100和1000全等间距。有谁知道如何做到这一点?我只能找到数据是日志和轴的示例。我附上了我目前使用的代码: 提前感谢您提供的任何帮助。 冬青

Stats_nineteen<-read.csv('C:/Users/Holly/Documents/Software Manuals/R Stuff/Stats_nineteen.csv')
attach(Stats_nineteen)
x<-Max
x1<-Min
x2<-Max
y1<-Depth
y2<-Depth
par(bg="white")
par(xlog=TRUE)
plot(x2,y1, type="n", ylim=c(555,0), log="x", axes=FALSE, ann=FALSE)
box()
axis(3, at=c(1,10,100,1000), label=c(1,10,100,1000), pos=0, cex.axis=0.6)
axis(1, at=c(1,10,100,1000), label=c(1,10,100,1000), cex.axis=0.6)
axis(2, at=c(600,550,500,450,400,350,300,250,200,150,100,50,0), label=c
(600,"",500,"",400,"",300,"",200,"",100,"",0), cex.axis=0.6)
mtext("CLAST SIZE / mm", side=3, line=1, cex=0.6, las=0, col="black")
mtext("DEPTH / m", side=2, line=2, cex=0.6, las=0, col="black")
grid(nx = NULL, ny = NULL, col = "lightgray", lty = "solid",
lwd = par("lwd"), equilogs = TRUE)
par(new=TRUE)
lines(x1,y1, col="black", lty="solid", lwd=1)
lines(x2,y2, col="black", lty="solid", lwd=1)
polygon(c(x1,rev(x2)), c(y1,rev(y2)), col="grey", border="black")
par(new=TRUE)
plot(x=Average,y=Depth, type="o",
bg="red", cex=0.5, pch=21,
col="red", lty="solid",
axes=FALSE, xlim=c(0,1670), ylim=c(555,0),
ylab = "",xlab = "")
par(new=TRUE)
plot(x=Mode,y=Depth, type="o",
bg="blue", cex=0.5, pch=21,
col="blue", lty="solid",
axes=FALSE, xlim=c(0,1670), ylim=c(555,0),
ylab = "",xlab = "")

1 个答案:

答案 0 :(得分:4)

您可以使用scale_x_log

在ggplot中执行此操作

如下所示:

myplot <- ggplot( StatsNinetee, 
                  aes (x = myResponse,
                       y = myPredictor,
                       groups = myGroupingVariable) ) +
          geom_point() +
          scale_x_log()
myplot

另外,避免attach()它可以给出奇怪的行为。