使用在整个地块区域内随机生成的观察值创建可视化

时间:2015-12-10 23:34:02

标签: r d3.js random plot ggplot2

简而言之,我正在寻找帮助,创建一个绘图,其中绘图的特定区域被指定为某个随机分配的观察(具有由颜色指定的特定因子)。我更喜欢ggplot2或d3。

我今天正在讨论,并试图证明即使我们随机选择观察,我们也可能选择一个感兴趣的观察。换句话说,如果每个观察被随机分配到飞镖的某个部分并且我投掷飞镖,那么很可能我的飞镖会击中一个感兴趣的观察

现在,我现在正试图创建这个飞镖靶。

我一直在搞乱ggplot2而且我已接近我想要的可视化但不完全。

首先,我尝试使用geom_polar。我为每次观察随机生成坐标

df$Coord1 <- sample(50, size = nrow(df), replace = TRUE)
df$Coord2 <- sample(50, size = nrow(df), replace = TRUE)

然后绘制它们然而,这里的问题是没有拍摄情节的所有区域。 (还有一些问题实际上是重叠的......所以如果有人也知道如何生成那些不会重叠的坐标那么好。)如果我要扔飞镖,我可能不会观察到。这是我使用的代码:

dartboard <- ggplot(df, aes(Coord1, Coord2, fill = Classification)) +
geom_tile()+coord_polar()

Attempted Dartboard 1

所以,然后我尝试用饼图。

pie <- ggplot(df, aes(x = factor(1), fill = factor(Classification))) +
geom_bar(width = 1) +  coord_polar()

Attempt #2

这很好,因为它是一个完整的圆圈,但是当我希望它们随机散布在图中时,它将分类组合在一起。

我也尝试复制这个热图创建(http://www.r-bloggers.com/controlling-heatmap-colors-with-ggplot2/),但我无法弄清楚如何使其与我的数据正确匹配。

简而言之,我正在寻找帮助,创建一个情节,其中情节的特定区域被指定为具有特定因素的特定观察。

有什么想法吗?

更新1:

此代码是我从概念层面直观地寻找的(图表的所有部分都被观察所覆盖:

df <- expand.grid(x = 1:20, y = 1:20)
samples <- c("one", "two", "three", "four", "five")
df$series <- samples[runif(n = nrow(df), min=1,max=length(samples))]
g <- ggplot(df, aes(fill=series, xmin = x, ymin = y, xmax = x+1, ymax = y+1))
g <- g + geom_rect()
g <- g + coord_polar(theta="y")
g <- g + theme(panel.grid=element_blank())
g <- g + theme(axis.text=element_blank())
g <- g + theme(axis.ticks=element_blank())
g

Attempt 1

但是现在我想弄清楚如何将它应用到我自己的数据集中,该数据集有大约1,500个观测值。该图片中的坐标与expand.grid一起使用,所以现在我想弄清楚如何为我自己的1,500个观测值分配坐标。

更新2:

我在下面的代码中取得了相对成功。

Success

random <- expand.grid(x = 1:40, y = 1:39)

random <- random %>%
  mutate(ID = 1,
         ID = cumsum(ID))

plot.data <- full_join(data, random, by = "ID")

samples <- c("UI", "IN", "OW", "BE" , "Five")
plot.data$Classification <- samples[runif(n = nrow(plot.data), min=1,max=length(samples))]
g <- ggplot(plot.data, aes(fill=Classification, xmin = x, ymin = y, xmax = x+1, ymax = y+1))
g <- g + geom_rect()
g <- g + coord_polar(theta="y")
g <- g + theme(panel.grid=element_blank())
g <- g + theme(axis.text=element_blank())
g <- g + theme(axis.ticks=element_blank())
g <- g + scale_fill_manual(values=c("dark green", "orange" , "yellow" , "red" , "green"))
g

我使用expand.grid函数为孩子分配坐标。有些观察结果被遗漏了,因为它们无法给出坐标,但没关系。

我现在唯一担心/抱怨的是一些观察结果比其他观察结果更大(因而更容易被击中)......所以我可能会检查一下热图。时间会证明。非常感谢你们的帮助。

更新3:

另一个版本(可能是最终形式):

Final form

这样,每次观察的大小大致相同。

这个热图版本的基础可以在这里找到:http://www.r-bloggers.com/controlling-heatmap-colors-with-ggplot2/但这里是我自己的代码

ggplot(plot.data, aes(x = x, y = y, fill = factor(Classification))) +
  geom_tile(color = "black") +
  scale_fill_manual(values=c("dark green", "orange" , "yellow" , "red" , "green")) +
  theme(legend.position="none") +
  theme_change

1 个答案:

答案 0 :(得分:2)

这是怎么回事?

class StandardTextField: UITextField {
    //no initializers
}