我使用R包visreg()和ggplot2()来显示长度与适应温度之间的关系。温度是23度和28度,所以我想在点上加上抖动,以确保这些点不会全部出现在同一条线上。但是,当我在visreg()中使用jitter = TRUE选项时,我发现抖动太大了。
以下是我尝试过的:
library(ggplot2)
library(visreg)
p1 <- visreg(m,"a_temp",by="ploisex", overlay=TRUE, jitter = TRUE, gg=TRUE) +
xlab("Acclimation temperature (°C)") +
ylab("Log final length") + ylim(2.8,3.4) +
scale_fill_manual(name = "Ploidy level/sex", values = c("2n f" = "blue", "2n m" = "lightblue", "3n m" = "red")) +
scale_colour_manual(name = "Ploidy level/sex", values = c("2n f" = "blue", "2n m" = "lightblue", "3n m" = "red")) +
theme_bw()
p1它给出了下面的情节:plot1
我试图通过使用geom_jitter来改变抖动的宽度,但现在点被绘制成双倍(我没有改变新点的颜色,以便更容易地看到点是双倍的)。
下面是我的第二个情节的代码:
p2 <- visreg(m,"a_temp",by="ploisex", overlay=TRUE, gg=TRUE) +
geom_jitter(width = .1) +
#geom_jitter(width = .1, aes(color=ploisex)) +
xlab("Acclimation temperature (°C)") +
ylab("Log final length") + ylim(2.8,3.4) +
scale_fill_manual(name = "Ploidy level/sex", values = c("2n f" = "blue", "2n m" = "lightblue", "3n m" = "red")) +
scale_colour_manual(name = "Ploidy level/sex", values = c("2n f" = "blue", "2n m" = "lightblue", "3n m" = "red")) +
theme_bw()
p2它给出了下面的情节:plot2
当我将jitter = TRUE和geom_jitter组合在一起时,抖动的宽度根本不会改变,但是点仍然是双倍的:
p3 <- visreg(m,"a_temp",by="ploisex", overlay=TRUE, jitter = TRUE, gg=TRUE) +
geom_jitter(width = .1) +
#geom_jitter(width = .1, aes(color=ploisex)) +
xlab("Acclimation temperature (°C)") +
ylab("Log final length") + ylim(2.8,3.4) +
scale_fill_manual(name = "Ploidy level/sex", values = c("2n f" = "blue", "2n m" = "lightblue", "3n m" = "red")) +
scale_colour_manual(name = "Ploidy level/sex", values = c("2n f" = "blue", "2n m" = "lightblue", "3n m" = "red")) +
theme_bw()
p3我想知道如何才能改变抖动的宽度,而不画出双倍的点。
顺便说一下,我不是一个程序员,所以我希望我正确地问了这个问题。非常感谢您的帮助!
发布于 2022-06-29 10:44:57
您可以通过points = list(position = position_jitter(width = ...))设置抖动量。
使用visage中的默认示例并通过第二个geom_point添加未抖动的数据
library(visreg)
library(ggplot2)
fit <- lm(Ozone ~ Solar.R + Wind + Temp, data=airquality)
visreg(fit, "Wind", gg=TRUE, points = list(position = position_jitter(width = 20))) +
geom_point(aes(color = "Unjittered Points"))

https://stackoverflow.com/questions/72799907
复制相似问题