[英]Creating a visualization with observations randomly generated over the entire area of a plot
简而言之,我正在寻求帮助来创建一个绘图,其中将绘图的特定区域指定给某个随机分配的观测值(该观测值具有由颜色指定的特定因子)。 我更喜欢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()
所以,然后我尝试了饼图。
pie <- ggplot(df, aes(x = factor(1), fill = factor(Classification))) +
geom_bar(width = 1) + coord_polar()
这很好,因为它是一个完整的圆圈,但是当我希望它们随机散布在整个图上时,它将分类归为一组。
我还尝试复制此热图创建( 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
但是现在我试图弄清楚如何将其应用于我自己的数据集,该数据集包含约1500个观测值。 该图片中的坐标与expand.grid一起使用,因此现在我想弄清楚如何为我自己的1500个观测值分配坐标。
更新2:
我在下面的代码中取得了相对的成功。
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:
另一个版本(可能是最终形式):
这样,每个观察值的大小大致相同。
此热图版本的基础可以在以下位置找到: 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
这个怎么样?
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.