2015-04-02 3 views
1

Я хотел бы показать короткую временную серию, показывающую гетерогенность изъятий героина в Европе в течение 22 лет. Однако в некоторые годы в стране есть разные страны. Я хотел бы показать это на графике, поставив «n = xx» на каждый год по оси x. Кто-нибудь знает, как я должен это делать?

Пользовательские метки осевого тика в ggplot2

across_time<- ggplot(by_year, aes(year, value) + 
      geom_errorbar(aes(ymin=value-se, ymax=value+se), width=.4) + 
      geom_line(colour="black", size= 2) + 
      geom_point(size=4, shape=21, fill="white") + # 21 is filled circle 
      xlab("Year") + 
      ylab("Siezures") + 
      ggtitle("Hetrogeniety Across Time") + 
      scale_x_continuous(breaks = round(seq(min(1990), max(2012), by=2))) 
across_time 

Вот ссылка на то, что график выглядит следующим образом:

http://imgur.com/XWhBqqi

ответ

0

Вы пытались использовать аргумент метки в scale_x_continuous? Если у вас есть вектор с «xx», который вы хотите как ярлыки, это должно работать.

+0

Да, у меня есть. Однако, когда я указываю метки с аргументом метки, я получаю ошибку: «Дискретное значение, заданное для непрерывного масштабирования». Это имеет смысл, учитывая, что мои ярлыки выглядят примерно так: «1990 \\ n = 41». Любые предложения? – rajenur

+0

Если лаборатория в ваших данных является числовой, тогда масштаб автоматически выбирается непрерывным, поэтому вы хотите изменить это на фактор, чтобы смягчить это. Это единственное, что я могу придумать. – user3239929

2

Я нашел это в качестве решения:

#make a list of the lables you want 
lab<- c("1990\nn=26", "1991\nn=29", "1992\nn=30", "1993\nn=32", "1994\nn=36", "1995\nn=35", "1996\nn=33", "1997\nn=38", "1998\nn=36", "1999\nn=39", "2000\nn=39", "2001\nn=40", "2002\nn=38", "2003\nn=40", "2004\nn=39", "2005\nn=41", "2006\nn=42", "2007\nn=43", "2008\nn=44", "2009\nn=41", "2010\nn=41", "2011\nn=41", "2012\nn=42") 
lab<- as.factor(lab) 

#bind our label list to our table 
by_year<-cbind(lab, by_year) 

#make a column of zeros to group by for the line 
by_year$g<- 0 

# Standard error of the mean 
    across_time<- ggplot(by_year, aes(x=lab, y=value)) + 
     geom_errorbar(aes(ymin=value-se, ymax=value+se), width=.4) + 
     geom_line(aes(group=g), colour="black", size= 2) + #notice the grouping 
     geom_point(size=4, shape=21, fill="white") + # 21 is filled circle 
     scale_x_discrete(labels = by_year$lab) + # discrete not continuous 
     xlab("Year & Number of Reporting Countries") + 
     ylab("Total Annual Seizures") + 
     ggtitle("Heterogeneity of Heroin Seizures in Europe") 
across_time 

Вот конечный результат:

Смежные вопросы