r - 如何在给定一列二进制数据的情况下使用 ggplot 制作多列图表
问题描述
我有这张表是从一个有 300 万个观察值的数据框中生成的。
df_mc_day <- df_clean_distances %>%
mutate(weekday = factor(weekdays(df_clean_distances$started_at),levels=c("Monday",
"Tuesday", "Wednesday","Thursday", "Friday", "Saturday", "Sunday")),
mc=c(member_casual)) %>% tabyl(weekday, member_casual)
df_mc_day %>% adorn_totals("row")
weekday casual member
Monday 147989 261391
Tuesday 142020 278049
Wednesday 154818 298865
Thursday 162762 294189
Friday 204401 299752
Saturday 329738 316257
Sunday 258167 259599
Total 1399895 2008102
但我只能让 ggplot 在两个单独的图表中绘制成员或随意。我知道它与 mutate 有关,但我不明白 mutate 在做什么。
ggplot() + geom_col( data=df_mc_day, aes(x=weekday, y=member))
ggplot() + geom_col( data=df_mc_day, aes(x=weekday, y=casual))
解决方案
将数据重塑为“长”格式pivot_longer
并使用ggplot
library(dplyr)
library(tidyr)
library(ggplot2)
df_mc_day %>%
pivot_longer(cols = -weekday) %>%
ggplot(aes(x = weekday, y = value, fill = name)) +
geom_col(position = 'dodge') +
theme_bw()
数据
df_mc_day <- structure(list(weekday = c("Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday", "Sunday", "Total"), casual = c(147989L,
142020L, 154818L, 162762L, 204401L, 329738L, 258167L, 1399895L
), member = c(261391L, 278049L, 298865L, 294189L, 299752L, 316257L,
259599L, 2008102L)), class = "data.frame", row.names = c(NA,
-8L))
推荐阅读
- perl - Perl:非阻塞管道 - 只收到一条消息
- html - 为什么我的 AngularJS 变量作为文字代码传递?
- jquery - 在 jQuery 中使用 this 仅针对选择器的一个实例
- psql - 如何使用 psql 上传大文本文件?
- c++ - 在 C++ 中暂停 - 哪种方法?
- web-crawler - 使用storm crawler可以同时运行多少个Crawler
- powershell - Powershell Get-PnPListItem 截断内部字段名称
- python-3.x - 表单验证模型覆盖不起作用
- javascript - 当我尝试格式化日期时 Chart.js 未显示
- amazon-cognito - aws-amplify 可以支持可以在其中切换的多个并发登录吗?