首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用visreg和ggplot2来绘制数据,以更改抖动的宽度?

如何使用visreg和ggplot2来绘制数据,以更改抖动的宽度?
EN

Stack Overflow用户
提问于 2022-06-29 10:32:57
回答 1查看 79关注 0票数 0

我使用R包visreg()和ggplot2()来显示长度与适应温度之间的关系。温度是23度和28度,所以我想在点上加上抖动,以确保这些点不会全部出现在同一条线上。但是,当我在visreg()中使用jitter = TRUE选项时,我发现抖动太大了。

以下是我尝试过的:

代码语言:javascript
复制
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来改变抖动的宽度,但现在点被绘制成双倍(我没有改变新点的颜色,以便更容易地看到点是双倍的)。

下面是我的第二个情节的代码:

代码语言:javascript
复制
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 = TRUEgeom_jitter组合在一起时,抖动的宽度根本不会改变,但是点仍然是双倍的:

代码语言:javascript
复制
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

plot3

我想知道如何才能改变抖动的宽度,而不画出双倍的点。

顺便说一下,我不是一个程序员,所以我希望我正确地问了这个问题。非常感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2022-06-29 10:44:57

您可以通过points = list(position = position_jitter(width = ...))设置抖动量。

使用visage中的默认示例并通过第二个geom_point添加未抖动的数据

代码语言:javascript
复制
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"))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72799907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档