Вам нужно превратить 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))
# here is the change:
df$GeoName <- factor(
df$GeoName,
levels = (filter(df, year == 2009) %>%
arrange(desc(percent_change)))$GeoName)
#create my color ramp function
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)))+ # color function
scale_x_continuous(breaks = c(2009, 2010, 2011))+ # from above
theme(panel.background = element_blank(),
panel.grid = element_blank(),
axis.line = element_line(color = 'black'))

Поскольку линии перекрещиваются, они могут быть в естественном порядке только в течение одного года. Вам нужно выбрать тот, который лучше всего подходит для истории, которую вы хотите рассказать.