1

我有 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 = "")
4

1 回答 1

4

您可以在 ggplot 中使用scale_x_log

所以像:

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

另外,避免attach()它会产生奇怪的行为。

于 2012-08-13T16:51:43.067 回答