首页 > 解决方案 > 如何仅标记ggplot2中的某些点

问题描述

我有一个global包含三列YearMTCO2和的数据框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"))

标签: rggplot2data-visualization

解决方案


我想有几种方法可以解决它。只需对您的代码进行最少的更改,我就尝试过:

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)

在此处输入图像描述


推荐阅读