r - 如何仅标记ggplot2中的某些点
问题描述
我有一个global
包含三列Year
、MTCO2
和的数据框Scenario
。我创建了一个散点图,看起来像我想要的那样,但我正在努力解决如何最好地标记图上的几个点。
到目前为止,这是我的代码:
plot1 <- global %>%
ggplot(aes(Year, MTCO2, group = Scenario, colour = Scenario)) +
geom_line(size = 1) +
geom_point(size = 2) +
scale_x_continuous(name = "Year", breaks = c(1990, 2000, 2006, 2020, 2030, 2040, 2050)) +
theme_bw() +
labs(title = "Global CO2 Emissions Projections with and without Constraints")
plot1a <- plot1 + geom_text(data = subset(global, Year == 2006 | Year == 2030 | Year == 2050 ),
aes(Year, MTCO2, label = MTCO2))
我的目标是使文本变为黑色,用一条线将其与该点相连接,以便有一个 2006 年的标签、一个 2030 年的标签(仅适用于 Global_Constraint 线)和一个 2050 年的标签(适用于仅限 Global_Constraint 行)。我还希望能够在点值之后写更多(即 8261,基准年值)。图例还在点上显示了字母“a”,我也想去掉它。
这是数据:
dput(global)
structure(list(Year = c(1990, 2005, 2006, 2010, 2015, 2020, 2025,
2030, 2035, 2040, 2045, 2050, 1990, 2005, 2006, 2010, 2015, 2020,
2025, 2030, 2035, 2040, 2045, 2050), MTCO2 = c(6045, 8039, 8261,
9149, 9646, 10453, 7889, 6937, 5467, 4400, 2589, 2432, 6045,
8039, 8261, 9149, 9646, 10528, 11488, 12368, 13092, 13708, 14305,
14754), Scenario = c("Global_Constraint", "Global_Constraint",
"Global_Constraint", "Global_Constraint", "Global_Constraint",
"Global_Constraint", "Global_Constraint", "Global_Constraint",
"Global_Constraint", "Global_Constraint", "Global_Constraint",
"Global_Constraint", "Global_Reference", "Global_Reference",
"Global_Reference", "Global_Reference", "Global_Reference", "Global_Reference",
"Global_Reference", "Global_Reference", "Global_Reference", "Global_Reference",
"Global_Reference", "Global_Reference")), class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -24L), spec = structure(list(
cols = list(Year = structure(list(), class = c("collector_double",
"collector")), MTCO2 = structure(list(), class = c("collector_double",
"collector")), Scenario = structure(list(), class = c("collector_character",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1), class = "col_spec"))
解决方案
我想有几种方法可以解决它。只需对您的代码进行最少的更改,我就尝试过:
library(ggplot2)
plot1 <- global %>%
ggplot(aes(Year, MTCO2, group = Scenario, colour = Scenario)) +
geom_line(size = 1) +
geom_point(size = 2) +
scale_x_continuous(name = "Year", breaks = c(1990, 2000, 2006, 2020, 2030, 2040, 2050)) +
theme_bw() +
labs(title = "Global CO2 Emissions Projections with and without Constraints")
plot1a <- plot1 + geom_text(data = subset(global, Year == 2006 | Year == 2030 | Year == 2050 ),
aes(Year, MTCO2, label = MTCO2),
color = "black", nudge_x = -6)
推荐阅读
- swift - 快速 4 UIPageViewControler
- android - 获取 Flowable 订阅方法的结果
- php - 如何在 sql 查询的一部分中正确地将 2 个 foreach 循环组合在一起?
- .htaccess - .php 扩展名已隐藏时的 URL 重写
- gatsby - gatsbyjs:多次使用graphql,还是一次使用并通过上下文传递结果?
- javascript - 如何更新异步函数中的 javascript 变量的值
- typescript - 文档类型不仅仅是“对象”?
- django - 附加字段显示在管理 change_list 视图中的表外
- matlab - 如何将正弦波形转换为音频?
- java - tomcat 启动但它没有监听任何端口