如何解决如何根据第二个数据集中的数据在y轴位置绘制一个数据集中的文本标签?
我第一次尝试使用reprex创建我的问题的可重现示例,因此希望它可以正确运行。因此,我在ggplot中使用了两个数据集,并且试图在实施之日起将国家政策绘制在冠状病毒病例数以上。在这个示例中,我选择从两个数据集中只关注一个国家。我已经考虑过尝试加入它们,但是两个数据集中的国家/地区数量并不相等,因此我不确定这是否行得通。
因此,目标是使策略名称徘徊在实施日期的最上方。我相信它们当前处于正确的位置,但是我不知道如何在geom文本层中设置y轴位置,因为案例的数据正在第一层中使用。
任何有关如何解决此问题的建议都将非常有帮助,谢谢。
编辑:我打算将其扩展到我的数据集中的所有国家(大约176个),因此手动进行操作不是现实的方法。
library(tidyverse)
library(scales)
#>
#> Attaching package: 'scales'
#> The following object is masked from 'package:purrr':
#>
#> discard
#> The following object is masked from 'package:readr':
#>
#> col_factor
policy_uk <- data.frame(
stringsAsFactors = FALSE,X = c(1L,2L,3L,4L,5L,6L,7L,8L,9L,10L,11L,12L,13L,14L,15L,16L,17L),CountryName = c("United Kingdom","United Kingdom","United Kingdom"),Date = c("2020-01-20","2020-01-31","2020-02-02","2020-02-03","2020-03-11","2020-03-16","2020-03-17","2020-03-20","2020-03-22","2020-03-23","2020-03-26","2020-06-08"),policy = c("H2_Testing.policy","H3_Contact.tracing","H1_Public.information.campaigns","H5_Investment.in.vaccines","E3_Fiscal.measures","E4_International.support","H4_Emergency.investment.in.healthcare","C2_Workplace.closing","C3_Cancel.public.events","E2_Debt.contract.relief","E1_Income.support","C7_Restrictions.on.internal.movement","C1_School.closing","C4_Restrictions.on.gatherings","C6_Stay.at.home.requirements","C5_Close.public.transport","C8_International.travel.controls"),level = c(1,2,26014287.82,32223318564.93,183360000,6444663712.99,1,3,4,2)
)
uk_cases <- data.frame(
stringsAsFactors = FALSE,countriesAndTerritories = c("United_Kingdom","United_Kingdom","United_Kingdom"),dateRep = c("2020-08-13","2020-08-12","2020-08-11","2020-08-10","2020-08-09","2020-08-08","2020-08-07","2020-08-06","2020-08-05","2020-08-04","2020-08-03","2020-08-02","2020-08-01","2020-07-31","2020-07-30","2020-07-29","2020-07-28","2020-07-27","2020-07-26","2020-07-25","2020-07-24","2020-07-23","2020-07-22","2020-07-21","2020-07-20","2020-07-19","2020-07-18","2020-07-17","2020-07-16","2020-07-15","2020-07-14","2020-07-13","2020-07-12","2020-07-11","2020-07-10","2020-07-09","2020-07-08","2020-07-07","2020-07-06","2020-07-05","2020-07-04","2020-07-03","2020-07-02","2020-07-01","2020-06-30","2020-06-29","2020-06-28","2020-06-27","2020-06-26","2020-06-25","2020-06-24","2020-06-23","2020-06-22","2020-06-21","2020-06-20","2020-06-19","2020-06-18","2020-06-17","2020-06-16","2020-06-15","2020-06-14","2020-06-13","2020-06-12","2020-06-11","2020-06-10","2020-06-09","2020-06-08","2020-06-07","2020-06-06","2020-06-05","2020-06-04","2020-06-03","2020-06-02","2020-06-01","2020-05-31","2020-05-30","2020-05-29","2020-05-28","2020-05-27","2020-05-26","2020-05-25","2020-05-24","2020-05-23","2020-05-22","2020-05-21","2020-05-20","2020-05-19","2020-05-18","2020-05-17","2020-05-16","2020-05-15","2020-05-14","2020-05-13","2020-05-12","2020-05-11","2020-05-10","2020-05-09","2020-05-08","2020-05-07","2020-05-06","2020-05-05","2020-05-04","2020-05-03","2020-05-02","2020-05-01","2020-04-30","2020-04-29","2020-04-28","2020-04-27","2020-04-26","2020-04-25","2020-04-24","2020-04-23","2020-04-22","2020-04-21","2020-04-20","2020-04-19","2020-04-18","2020-04-17","2020-04-16","2020-04-15","2020-04-14","2020-04-13","2020-04-12","2020-04-11","2020-04-10","2020-04-09","2020-04-08","2020-04-07","2020-04-06","2020-04-05","2020-04-04","2020-04-03","2020-04-02","2020-04-01","2020-03-31","2020-03-30","2020-03-29","2020-03-28","2020-03-27","2020-03-25","2020-03-24","2020-03-21","2020-03-19","2020-03-18","2020-03-17"),cases = c(1009L,1148L,816L,1062L,758L,871L,950L,891L,670L,928L,743L,771L,880L,846L,763L,70L,371L,421L,667L,731L,773L,751L,793L,413L,493L,569L,704L,772L,685L,726L,361L,442L,565L,715L,693L,597L,555L,401L,579L,602L,651L,617L,730L,446L,649L,671L,721L,778L,886L,896L,639L,687L,986L,1027L,1013L,1102L,1043L,822L,890L,1052L,1017L,1199L,1158L,1099L,801L,1120L,1243L,1356L,1484L,1441L,1079L,1125L,1527L,1760L,1835L,1672L,1624L,1364L,2062L,2574L,2718L,3052L,2589L,1838L,2079L,2526L,2628L,3307L,3402L,3586L,2329L,2157L,3063L,3767L,3827L,3682L,3389L,2982L,3229L,4737L,4966L,5442L,4729L,4706L,3473L,3748L,4970L,5158L,5487L,4760L,4854L,3853L,4721L,4956L,5292L,5065L,4326L,4178L,3489L,3579L,4313L,4858L,5131L,5450L,5282L,3592L,4020L,4911L,4868L,4913L,4514L,4273L,2858L,2822L,3197L,3087L,2692L,2375L,2338L,1378L,1198L,1255L,1055L,999L,769L,611L,442L)
)
uk_cases$dateRep <- as.Date(uk_cases$dateRep)
policy_uk$Date <- as.Date(policy_uk$Date)
ggplot() +
geom_bar(data = uk_cases,aes(x = dateRep,y = cases),stat = "identity") +
geom_text(data = policy_uk,aes(x = Date,y = 5000,label = policy)) +
scale_x_date(breaks = "1 month",minor_breaks = "1 week",labels=date_format("%B"))
由reprex package(v0.3.0)于2020-08-13创建
解决方法
以下是四舍五入至最接近日期并使用该日期之后的案例编号的示例。问题是许多政策必须四舍五入到同一日期(例如,在报告任何案件之前发生的政策都被四舍五入到第一份报告)或日期与相同数目的案件一起四舍五入。要避开重叠标签,您需要使用position = "dodge"
之类的偏斜标签。
setDT(policy_uk)[,join_date := Date]
setDT(uk_cases)[,join_date := dateRep]
# rolling join
df<-uk_cases[policy_uk,on = .(join_date),roll = "nearest"]
ggplot() +
geom_bar(data = uk_cases,aes(x = dateRep,y = cases),stat = "identity") +
geom_text(data = df,aes(x = Date,y = cases,label = policy)) +
scale_x_date(breaks = "1 month",minor_breaks = "1 week",labels=date_format("%B"))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。