r - R:如何在 rmarkdown 中最好地可视化“是/否/不确定”
问题描述
我是 R 的初学者。我在调查rmarkdown
中使用 编写报告时遇到了困难ggplot
。目前样本量很小。我开始思考——考虑到三个答案可能是“是”、“否”、“不确定”,我如何才能最好地形象化答案,我希望读者一眼就知道所有三个答案都是可能的,但有些选项是没有选择。下面重现了我当前针对该问题的数据:
df.YesNoUncertain <- data.frame(
X = sample(c("Yes", "No"), 11, replace = TRUE, prob = c(.99,.001)),
Y = sample(c("Yes", "No"), 11, replace = TRUE, prob = c(.9,.2)),
stringsAsFactors = F
)
我想到了饼图,但是没有显示未选择的答案(“不确定”)。也许有更好的方法来做到这一点?
解决方案
我不喜欢饼图(出于不同的原因,请参阅这篇文章),那么这样的东西怎么样?
df.YesNoUncertain %>%
gather(Group, Response) %>%
mutate(Response = factor(Response, levels = c("Yes", "No", "Uncertain"))) %>%
count(Group, Response) %>%
complete(Group, Response, fill = list(n = 0)) %>%
ggplot(aes(Response, n, fill = Group)) + geom_col(position = "dodge")
读者可以很容易地识别零计数响应,例如在“X”组中有零个“否”响应,而在两组中都有零个“不确定”响应。
更新
要显示百分比,您可以执行以下操作
df.YesNoUncertain %>%
gather(Group, Response) %>%
mutate(Response = factor(Response, levels = c("Yes", "No", "Uncertain"))) %>%
count(Group, Response) %>%
complete(Group, Response, fill = list(n = 0)) %>%
group_by(Group) %>%
mutate(Percentage = n / sum(n) * 100) %>%
ggplot(aes(Response, Percentage, fill = Group)) + geom_col(position = "dodge")
或者,您也可以使用scales::percent
,例如ggplot replace count with percent in geom_bar。
推荐阅读
- python - 如何在 multiprocessing.dummy.Pool 中单独命名线程?
- java - 从 java 运行 ansible-playbook
- ios - 解包时发现 Nil 可选
- laravel - 在 twilio 中发送短信时处理错误
- javascript - 如何使这个禁用的输入充当启用的输入并在单击按钮时滚动?
- jupyter-notebook - 将 Jupyter 笔记本添加到 IBM Watson Studio 项目
- php - 减去日期和时间 (PHP)
- android - Android - 将图像存储到图库
- coldfusion - 创建会话变量
- javascript - 为什么在尝试访问此全局变量时出现未捕获的引用错误?