这是基于以下内容的数据可视化问题:
要求参与者考虑他们的5个最亲密的朋友。他们然后 根据朋友所在的足球队将这些朋友分类 支持的。具体来说,参与者被问到这5个中有多少个 朋友支持同一个团队,不同的团队或没有团队。总数 必须等于5。例如,参与者可能回答3 朋友支持同一个团队,1个朋友支持不同的团队,以及 1个朋友不支持任何团队。
一个选项是生成条形图(请参见下文)。这个问题 它没有显示类别之间的关联。参加者 有3个支持同一团队的朋友可以有2个朋友 支持另一个团队的人,不支持团队的2个朋友或1个 支持不同团队的朋友和1个不支持的朋友 团队。
以下是一些数据。我使用tidyverse / ggplot2在R中进行绘图-尽管 欢迎使用其他包/语言创建的可视化效果!
## load required packages
library(tidyverse) # tidyverse v 1.2.1 with ggplot2 v 3.2.0
## set seed
set.seed(500)
## create tibble with randomly generated data
data <-
tibble(id = 1:20,
## column with friends who support same team
same = round(runif(20, 0, 5), 0),
## column with friends who support different team
diff = round(runif(20, 0, 5 - same), 0),
## column with friends who support no team
none = 5 - (same + diff),
## column that checks total equals 5
total = if_else(same + diff + none == 5, TRUE, FALSE))
## create plot
data %>%
gather(friends, number, c("same", "diff", "none")) %>%
ggplot() +
geom_bar(aes(x = number, fill = friends),
stat = "count",
## preserve to not drop counts of 0
position = position_dodge(preserve = "single")) +
## set axes to make plot more legible
scale_x_discrete(limits = c(0:5)) +
scale_y_continuous(breaks = seq(0, 20, 1)) +
theme_classic()
我不知道可视化此类数据的任何标准方法,因此任何 指针将不胜感激!
答案 0 :(得分:4)
您可以尝试镶嵌图。这不使用任何包。
tab <- as.matrix(data[2:4])
rownames(tab) <- data$id
mosaicplot(tab, col = rainbow(3), main = "My Plot")
如果需要ggplot2版本,ggmosaic软件包将提供geom_mosaic
。
library(ggmosaic)
data %>%
gather(friends, number, c("same", "diff", "none")) %>%
ggplot() +
geom_mosaic(aes(weight = number, x = product(friends),
conds = product(id), fill = friends))
答案 1 :(得分:2)
由于您有三种选择,因此另一个选择可能是ternary plot。
library(vcd)
ternaryplot(data[,2:4])
当然,您的某些点重叠,因此应用抖动可能会有所帮助。
ternaryplot(abs(apply(data[,2:4], 2, jitter)), cex=0.8)