I have the following data (temp.dat
see end note for full data)
Year State Capex 1 2003 VIC 5.356415 2 2004 VIC 5.765232 3 2005 VIC 5.247276 4 2006 VIC 5.579882 5 2007 VIC 5.142464 ...
and I can produce the following chart:
ggplot(temp.dat) + geom_line(aes(x = Year, y = Capex, group = State, colour = State))
Instead of the legend, I'd like the labels to be
I've noticed baptiste's comments in the answer in the following link, but when I try to adapt his code (geom_text(aes(label = State, colour = State, x = Inf, y = Capex), hjust = -1)
) the text does not appear.
ggplot2 - annotate outside of plot
temp.dat <- structure(list(Year = c("2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014"), State = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("VIC", "NSW", "QLD", "WA"), class = "factor"), Capex = c(5.35641472365348, 5.76523240652641, 5.24727577535625, 5.57988239709746, 5.14246402568366, 4.96786288162828, 5.493190785287, 6.08500616799372, 6.5092228474591, 7.03813541623157, 8.34736513875897, 9.04992300432169, 7.15830329914056, 7.21247045701994, 7.81373928617117, 7.76610217197542, 7.9744994967006, 7.93734452080786, 8.29289899132255, 7.85222269563982, 8.12683746325074, 8.61903784301649, 9.7904327253813, 9.75021175267288, 8.2950673974226, 6.6272705639724, 6.50170524635367, 6.15609626379471, 6.43799637295979, 6.9869551384028, 8.36305663640294, 8.31382617231745, 8.65409824343971, 9.70529678167458, 11.3102788081848, 11.8696420977237, 6.77937303542605, 5.51242844820827, 5.35789621712839, 4.38699327451101, 4.4925792218211, 4.29934654081527, 4.54639175257732, 4.70040615159951, 5.04056109514957, 5.49921208937735, 5.96590909090909, 6.18700407463007)), class = "data.frame", row.names = c(NA, -48L), .Names = c("Year", "State", "Capex"))
You can use the following syntax to change the legend labels in ggplot2: p + scale_fill_discrete(labels=c('label1', 'label2', 'label3', ...))
A newer solution is to use ggrepel
:
library(ggplot2) library(ggrepel) library(dplyr) temp.dat %>% mutate(label = if_else(Year == max(Year), as.character(State), NA_character_)) %>% ggplot(aes(x = Year, y = Capex, group = State, colour = State)) + geom_line() + geom_label_repel(aes(label = label), nudge_x = 1, na.rm = TRUE)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With