【问题标题】:Adding "noise" to a graph向图表添加“噪声”
【发布时间】:2021-06-18 17:16:12
【问题描述】:

我正在使用 R 编程语言。我使用“ggplot”库制作了以下图表:

#load library
library(RSSL)
library(ggplot2)

#generate first data
d <- generateCrescentMoon(1000,2,1)
d$c = ifelse(d$Class == "+", "1","0")
d$Class = NULL

ggplot(d, aes(x=X1, y=X2, color=c, shape=c)) +  geom_point() 

现在,我正在尝试向该图表的不同区域添加一些“噪声”。我做了以下事情:

#noise the first region (x1: -5 to 0 AND x2: -10 to 10)

c <- sample(0:1, 1000, TRUE)

X1 <- runif(100, min=-5, max=0)
X2 <- runif(100, min=-10, max=10)

a = data.frame(X1,X2,c)
a$c = as.factor(a$c)

g = rbind(a,d)

这为所需区域添加了噪音:

现在,我正在尝试向角落区域添加“噪音”

区域 1:(x1:-10 到 -5 和 x2:-5 到 -10) Region2: (x1: 5 to 10 AND x2: 5 to 10)

我通过重写现有文件并将它们合并在一起来做到这一点:

#Add noise to Region2
c <- sample( 0:1, replace=TRUE, prob=c(0.5, 0.5) )
X1 <- runif(100, min=5, max=10)
X2 <- runif(100, min=5, max=10)
f = data.frame(c,X1,X2)
f$c = as.factor(f$c)

#Append
gg = rbind(g,f)

#Add noise to Region1
c <- sample( 0:1, replace=TRUE, prob=c(0.5, 0.5) )
X1 <- runif(100, min=-10, max=-5)
X2 <- runif(100, min=-10, max=-5)
f = data.frame(c,X1,X2)
f$c = as.factor(f$c)

#Append ("g" is the final file)
g= rbind(gg,f)

但是当我尝试绘制此图时,“区域 2”中没有出现噪声

#plot
ggplot(g, aes(x=X1, y=X2, color=c, shape=c)) +  geom_point() 

有人知道为什么会这样吗?这是因为随机数生成过程吗?还是我的代码有错误?

谢谢

【问题讨论】:

    标签: r ggplot2 random data-visualization


    【解决方案1】:

    错误在你的行中:

    c <- sample( 0:1, replace=TRUE, prob=c(0.5, 0.5) )
    

    它从 0 和 1 中提取 两个 样本。一半时间您将提取两个不同的值(1 和 0,或 0 和 1),一半时间您将提取两个匹配价值观。当它匹配值时,您会得到您注意到的意外结果。

    来自sample的帮助:

    对于示例,大小的默认值是从中推断出的项目数 第一个参数,以便 sample(x) 生成随机排列 x(或 1:x)的元素。

    当您在数据框中使用二元向量 c 作为变量时,它将重复二元向量 50 次以匹配 X1 和 X2 的长度。

    你应该使用

    c <- sample( 0:1, size = 100, replace=TRUE, prob=c(0.5, 0.5))
    

    这将拉出一个长度为 100 的向量,并且基本上永远不会全为 0 或全为 1。

    【讨论】:

      猜你喜欢
      • 2014-09-05
      • 2013-10-17
      • 2019-09-12
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 2016-06-29
      相关资源
      最近更新 更多