r - 如何创建在 x 轴上考虑 2 个变量年和月并在 y 轴上考虑 2 个变量的条形图?
问题描述
我有一个名为“m”的数据框,有 4 列和大约 100 行。
如何创建一个条形图,其中我在 x 轴上获得正确的时间顺序,每年重复 1-12 个月?
解决方案
OP 要求的更新(见评论):
我已经使用
make_date
fromlubridate
package 来改变一个新的 columndate
。此时间日期为上课日期 -> 日期设置为月初:随着
pivot_longer
我们以正确的形状绘制数据来绘制我们的条形图。然后我们使用
scale_x_date
每 4 个月显示一次。
library(lubridate)
library(tidyverse)
library(scales)
m1 <- m %>%
mutate(date = make_date(YEAR, MONTH)) %>%
pivot_longer(
cols = c(AUTO, IMP),
names_to = "names",
values_to = "values"
)
ggplot(m1, aes(x=date, y=values, fill=names)) +
geom_bar(position='dodge', stat='identity') +
scale_x_date(date_breaks = "4 months" , date_labels = "%b-%y")+
theme_bw()
原始答案:
我们创建一个字符列Date
。要成为日期,我们需要一天,因此我们将其保留为字符类。我们将sprintf()
两列放在YEAR
一起MONTH
:
library(ggplot2)
m$Date <- with(m, sprintf("%d-%02d", YEAR, MONTH))
ggplot(m, aes(fill=AUTO, y=IMP, x=Date)) +
geom_bar(position='dodge', stat='identity')
数据:
m <- structure(list(YEAR = c(2009, 2009, 2009, 2009, 2009, 2009, 2009,
2009, 2009, 2009, 2009, 2009, 2010, 2010, 2010, 2010, 2010, 2010,
2010, 2010, 2010, 2010, 2010, 2010, 2011), MONTH = c(1, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 1), AUTO = c(0, 0.003130344, 0.01565172, 0.338077161,
0.01565172, 0, 0, 0.003130344, 0, 0, 0, 0, 0.012277821, 0.021486187,
0.009208366, 0.009208366, 0, 0, 0, 0, 0, 0, 0, 0, 0), IMP = c(0,
0, 0.037564129, 0.062606882, 0.006260688, 0, 0, 0, 0, 0, 0, 0,
0, 0.006138911, 0, 0.003069455, 0, 0, 0, 0, 0, 0, 0, 0, 0)), class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -25L), spec = structure(list(
cols = list(YEAR = structure(list(), class = c("collector_double",
"collector")), MONTH = structure(list(), class = c("collector_double",
"collector")), AUTO = structure(list(), class = c("collector_double",
"collector")), IMP = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1L), class = "col_spec"))
推荐阅读
- c# - 用户名或密码不正确 | System.IO.IOException
- maven - 在 Maven 中使用包装类型 pom 时真正需要或推荐哪些标签?
- google-sheets - 如何获取与 Google Sheet 上 2 列中的值匹配的最后一行
- r - 如何在 R 中创建圆形分支图?
- ios - 保留周期:弱参考理解和PropertyWrapper
- python - 如何使用 f1_score 为每个班级添加标签?
- django - 如何在 django-reversion 中获取字段、新值和更新值?
- google-cloud-platform - 想用 CloudFunctions 触发 DataFlowpipeline
- google-apps-script - 自定义侧边栏未显示。给出错误:ReferenceError:getService 未定义 eval
- ios - 在 Flutter 中打开 iOS 应用的权限设置