你需要转身
GeoName
并将其级别设置为正确的顺序。例如,我们可以按2009年的值着色:
library(ggplot2)
library(dplyr)
df <- data_frame(GeoName = rep(LETTERS, 3)) %>%
arrange(GeoName) %>%
mutate(year = rep(c(2009, 2010, 2011), 26),
percent_change = sample(seq(-3, 3, .1), 78, T))
df$GeoName <- factor(
df$GeoName,
levels = (filter(df, year == 2009) %>%
arrange(desc(percent_change)))$GeoName)
YlGnBu <- colorRampPalette(RColorBrewer::brewer.pal(9, 'YlGnBu'))
df %>%
ggplot(aes(year,
percent_change,
group = GeoName,
color = GeoName))+
geom_point(show.legend = F)+
geom_line(show.legend = F)+
scale_color_manual(values = YlGnBu(n_distinct(df$GeoName)))+
scale_x_continuous(breaks = c(2009, 2010, 2011))+
theme(panel.background = element_blank(),
panel.grid = element_blank(),
axis.line = element_line(color = 'black'))
因为这些线纵横交错,它们只能在一年内按自然顺序排列。你需要选择一个最适合你想要讲述的故事的。