寻找有序二进制数据的华夫饼式图表
In search of a Waffle-type chart for ordered binary data
我有 3000 个元素的向量,其中大部分填充了零 (0) 和一 (1) 的混合值。我正在尝试可视化这些出现的程度以及它们在数据中连续运行的程度。
我喜欢用不同颜色的小方块表示 0 和 1 实例的华夫饼图的想法。有没有办法调整华夫饼图来实现这种 2 色、有序数据、堆叠表示?
下面的代码提供了一个包含 200 个元素的向量,其中大部分填充了零作为示例。宽度 = 20 和高度 = 10 的华夫饼型图表符合我的要求。
这个解决方案接近我想要的,除了我需要保留视觉中数据的原始顺序。
library(tidyverse)
library(waffle)
dabble <- ifelse(runif(200) < 0.8, 0, 1 )
dabble
# [1] 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1
# [70] 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0
# [139] 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0
您可以在 ggplot 中直接使用 geom_tile
和一些数据整形来完成此操作:
library(tidyverse)
dabble <- ifelse(runif(200) < 0.8, 0, 1 )
df <- data.frame(z = dabble, x = rep(1:20, 10), y = rep(10:1, each = 20))
ggplot(df, aes(x, y, fill = factor(z))) +
geom_tile(color = "white", size = 2) +
scale_fill_manual(values = c("lightblue", "red4"), name = NULL) +
coord_equal() +
theme_void()
由 reprex package (v2.0.1)
创建于 2022-06-01
我有 3000 个元素的向量,其中大部分填充了零 (0) 和一 (1) 的混合值。我正在尝试可视化这些出现的程度以及它们在数据中连续运行的程度。
我喜欢用不同颜色的小方块表示 0 和 1 实例的华夫饼图的想法。有没有办法调整华夫饼图来实现这种 2 色、有序数据、堆叠表示?
下面的代码提供了一个包含 200 个元素的向量,其中大部分填充了零作为示例。宽度 = 20 和高度 = 10 的华夫饼型图表符合我的要求。
这个解决方案接近我想要的,除了我需要保留视觉中数据的原始顺序。
library(tidyverse)
library(waffle)
dabble <- ifelse(runif(200) < 0.8, 0, 1 )
dabble
# [1] 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1
# [70] 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0
# [139] 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0
您可以在 ggplot 中直接使用 geom_tile
和一些数据整形来完成此操作:
library(tidyverse)
dabble <- ifelse(runif(200) < 0.8, 0, 1 )
df <- data.frame(z = dabble, x = rep(1:20, 10), y = rep(10:1, each = 20))
ggplot(df, aes(x, y, fill = factor(z))) +
geom_tile(color = "white", size = 2) +
scale_fill_manual(values = c("lightblue", "red4"), name = NULL) +
coord_equal() +
theme_void()
由 reprex package (v2.0.1)
创建于 2022-06-01