如何使geom_jitter图可以重现散点图?

时间:2018-02-16 08:09:09

标签: r ggplot2 scatter-plot

我正在使用澳大利亚艾滋病生存数据。这次是创建散点图。

为了显示不同报告传播类别(T.categ)的生存性别,我以这种方式绘制图表:

data <- read.csv("https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/MASS/Aids2.csv")

data %>%
  ggplot() +
  geom_jitter(aes(T.categ, sex, colour = status))

显示图表。但每次运行代码时,它似乎都会产生不同的图表。这里有两个放在一起。

enter image description here

代码有什么问题吗?这是正常的(每个都运行不同的图表)吗?

3 个答案:

答案 0 :(得分:3)

在绘图时尝试设置种子:

set.seed(1); data %>%
  ggplot() +
  geom_jitter(aes(T.categ, sex, colour = status))

从手册?geom_jitter

  

它为每个点的位置添加了少量随机变体,是处理较小数据集中离散性引起的过度绘图的有用方法。

拥有&#34;随机变化&#34;可重现的,我们需要在绘图时设置set.seed

答案 1 :(得分:2)

如果我想制作一些随机的东西,但是可以根据排列等进行重复。我使用样本来设置种子: my.seed = sample(1:10000,1) set.seed(my.seed) 然后我可以用它来写一个文件名,如。

save(my_plot,paste0('plot',my.seed,'.rda')

答案 2 :(得分:2)

如果您使用geom_point而不是geom_jitter,则可以添加position = position_jitter(),它接受​​种子参数:

library(ggplot2)
p <- ggplot(mtcars, aes(as.factor(cyl), disp)) 

p + geom_point(position = position_jitter(seed = 42))


p + geom_point(position = position_jitter(seed = 1))

并返回到“ 42”


p + geom_point(position = position_jitter(seed = 42))

reprex package(v0.3.0)于2020-07-02创建