我有以下問題:我想使用ggplot創建一個圖表,顯示不同處理的兩個變量(貽貝中的微彈性量化,表示爲MP和Lipofuscin累積表示爲Lip)之間的關係暴露時間的獨立性。如何管理ggplot中的4個不同參數
我的數據是這樣的:
這裏是我的代碼:
ggplot(Catrv_all,aes(Lip,MP,color=treatment))+
geom_smooth(method="lm", se=FALSE)+
geom_point(size = 2)+
theme(legend.position = "bottom")+
theme(plot.title = element_text(hjust = 0.5))+
labs(x = "Lipofuscin accumulation [% area]",
y = "Microplastic quantification [% area]",
title = "Lipofuscin accumulation vs. Microplastic quantification")
情節是這樣的:
我認識到,ggplot顯然沒有訂購值以正確的方式曝光時間,因爲這些值不一致(例如,它不以0 h的值開始)。
我的問題是:我怎麼能告訴ggplot按暴露時間順序重新排列MP和Lip的順序?我應該創建第二個X軸嗎?如果是的話,我該如何在ggplot中做到這一點?
我在SO中看到了很多討論,這很難在ggplot中創建第二個x/y座標軸,但我不知道如何以另一種方式顯示我的數據。
更新我的問題:我聽從sconfluentus的意見,發現一個非常有趣的奔Bolker的答案在下面的帖子: How can I plot with 2 different y-axes?
我適應所提供的代碼:
## add extra space to right margin of plot within frame
par(mar=c(5, 4, 4, 6) + 0.1)
## split data set for treatment groups
MP_Ko<-Catrv_all$MP[1:8]
exp<-Catrv_all$expTime[1:8]
Lip_Ko<-Catrv_all$Lip[1:8]
## Plot first set of data and draw its axis
plot(exp, MP_Ko, pch=16, axes=FALSE, xlab="", ylab="",
type="b",col="black", main="Microplastic quantification vs. Lipofuscin accumulation in Controls")
axis(2,col="black",las=1) ## las=1 makes horizontal labels
mtext("Microplastic quantification [% area]",side=2,line=2.5)
box()
## Allow a second plot on the same graph
par(new=TRUE)
## Plot the second plot and put axis scale on right
plot(exp,Lip_Ko, pch=15, xlab="", ylab="",
axes=FALSE, type="b", col="red")
## a little farther out (line=4) to make room for labels
mtext("Lipofuscin accumulation [% area]",side=4,col="red",line=4)
axis(4, col="red",col.axis="red",las=1)
## Draw the time axis
axis(1,pretty(range(Catrv_all$expTime, 672)))
mtext("Time (Hours)",side=1,col="black",line=2.5)
## Add Legend
legend("topright",legend=c("Microplastic quantification","Lipofuscin accumulation"),
text.col=c("black","red"),pch=c(16,15),col=c("black","red"))
...並得到以下圖: enter image description here
費時,但這種方法是非常有幫助的。
請將您的數據粘貼爲文本,而不是圖片。 – zx8754
當你說「以正確的方式爲曝光時間命令數值」時,你的意思是什麼?您的情節不包含任何曝光時間。 您也可以使用'dput(Catrv_all)'並複製/粘貼輸出以使您的數據可用於社區。 – brettljausn
您分配給x/y軸(MP&Lip)的變量似乎是數值型的,因此根據增加的MP/Lip值對點進行排序是有意義的。如果你想按暴露時間排序,你的意思是你想把expTime分配給x軸嗎?請包含您所需輸出的圖示。這會讓其他人更容易理解你的要求。 –