R中的效果图,使用ggplot2比较两个不同的年份

时间:2019-07-02 00:49:21

标签: r ggplot2

我想做一个图形来比较不同的年份,类似于使用ggplot2:enter image description here

使用此数据集:

    Estado  Posição Ano
São Paulo   1   2017
Santa Catarina  2   2017
Paraná  3   2017
Distrito Federal    4   2017
Mato Grosso do Sul  5   2017
Minas Gerais    6   2017
Rio Grande do Sul   7   2017
Espirito Santo  8   2017
Rio de Janeiro  9   2017
Paraiba     10  2017
Ceará   11  2017
Mato Grosso     12  2017
Goiás   13  2017
Roraima 14  2017
Rio Grande do Norte 15  2017
Tocantins   16  2017
Rondônia    17  2017
Pernanbuco  18  2017
Acre    19  2017
Bahia   20  2017
Pará    21  2017
Amazonas    22  2017
Piauí   23  2017
Alagoas 24  2017
Maranhão    25  2017
Amapá   26  2017
Sergipe 27  2017
São Paulo   1   2018
Santa Catarina  2   2018
Paraná  4   2018
Distrito Federal    3   2018
Mato Grosso do Sul  7   2018
Minas Gerais    6   2018
Rio Grande do Sul   5   2018
Espirito Santo  8   2018
Rio de Janeiro  13  2018
Paraiba     9   2018
Ceará   12  2018
Mato Grosso     11  2018
Goiás   10  2018
Roraima 18  2018
Rio Grande do Norte 19  2018
Tocantins   15  2018
Rondônia    14  2018
Pernanbuco  20  2018
Acre    27  2018
Bahia   22  2018
Pará    23  2018
Amazonas    17  2018
Piauí   21  2018
Alagoas 16  2018
Maranhão    26  2018
Amapá   24  2018
Sergipe 25  2018

我尝试使用此代码(在注释中):

library(ggplot2) 
library(grid) 
ggplot(an.18.19.a, aes(x = Ano, y = Posição, group = Estado, label = Estado)) + 
geom_path(aes(x = Ano), arrow = arrow(length = unit(0.02, "npc")), size = 1, color = "green") + 
geom_text(size = 1) + 
theme_minimal() + 
theme(axis.title = element_blank(), 
      axis.text = element_blank(), 
      axis.ticks = element_blank(), 
      panel.grid = element_blank())

但是不幸的是,它没有用,有人建议帮我吗?

1 个答案:

答案 0 :(得分:1)

下面是一些入门的代码,其输出类似于示例。

library(dplyr)
library(ggplot2)

an.18.19.a %>% 
  arrange(Estado, Ano) %>% 
  group_by(Estado) %>% 
  mutate(Change = case_when(Posição < lead(Posição) ~ 1, 
                            Posição > lead(Posição) ~ -1, 
                            TRUE ~ 0), 
         Change = sum(Change, na.rm = TRUE), 
         Ano = factor(Ano)) %>% 
  ggplot(aes(reorder(Ano, Posição), Posição)) + 
  geom_point(aes(color = factor(Change))) + 
  geom_line(aes(group = Estado, color = factor(Change))) + 
  geom_text(data = filter(an.18.19.a, Ano == 2017), 
            aes(label = paste(Estado, Posição)), size = 2, nudge_x = -0.1, hjust = 1) + 
  geom_text(data = filter(an.18.19.a, Ano == 2018), 
            aes(label = paste(Posição, Estado)), size = 2, nudge_x = 0.1, hjust = 0) + 
  scale_y_reverse() + 
  scale_color_manual(values = c("blue", "grey", "red")) + 
  theme(axis.line = element_blank(), 
        axis.text = element_blank(), 
        axis.title = element_blank(), 
        axis.ticks = element_blank(), 
        panel.grid = element_blank(), 
        panel.border = element_blank()) + 
  guides(color = FALSE)

结果:

enter image description here