2015-11-13 60 views
4

我想用ggplot来绘制一个显示yaxis百分比的图。 这里的数据和代码,我用ggplot百分比乘以100

data<-"yrs.1.17 yrs.18.44 yrs.45.64 yrs.65.84 yrs.85. 
1  4.53  35.12  32.93  22.86 4.57 
2  4.01  34.74  34.19  22.71 4.34 
3  4.75  33.23  35.19  22.28 4.51 
4  4.60  34.04  36.93  20.70 3.56 
5  4.80  33.82  37.69  19.97 3.52 
6  4.30  35.09  37.08  19.83 3.65 
7  3.65  38.08  36.19  19.18 2.85 
8  3.72  38.11  36.10  19.22 2.86" 

mydata<- read.table(text=data, header=TRUE) 


year<-c(2006,2007,2008,2009,2010,2011,2012,2013) 
df<-data.frame(year,mydata) 
library(ggplot2) 
library(reshape2) 
library(scales) 
newdf<-melt(df,'year') 
ggplot(newdf,aes(x=year,y=value,group=variable,color=variable))+ geom_line(size=1)+ 
scale_x_continuous(breaks=year)+xlab("Year")+scale_y_continuous(labels = percent,limits=c(1,50),breaks=seq(5,50,by=5))+ylab("Age groups")+ 
geom_point(aes(shape=variable),size=3)+ 
ggtitle("Age groups of people between 2006 and 2013")+ 
theme(legend.title=element_blank(), legend.justification=c(0.6,0.6), legend.position=c(0.95,0.95), legend.text = element_text(size=9), 
axis.text = element_text(size=9), axis.title = element_text(size=9), plot.title=element_text(size = 9))  

正如你可以在输出的百分比都乘以100看是否有一种方式来获得正确的百分比。
非常感谢。

+0

我已经尝试在代码中使用以下代码,但没有任何更改。 scale_y_continuous(labels = percent) scale_y_continuous(labels = scales :: percent) scale_y_continuous(labels = percent_format()) – paulvr

+0

第一个问题的好例子(plus1)。如果Gregor回答了您的问题,您可以通过点击旁边的勾号来标记它(您也可以点击。 – user20650

回答

2

只是除以100:

ggplot(newdf, 
    aes(
    x = year, 
    y = value/100, # here divide by 100 
    group = variable, 
    color = variable 
) 
) + 
    geom_line(size=1)+ 
    scale_x_continuous(breaks=year) + 
    xlab("Year") + 
    scale_y_continuous(
    labels = percent, 
    limits = c(.01, .5),   # here divide by 100 
    breaks = seq(.05, .5, by = .05) # here divide by 100 
) + 
    ylab("Age groups") + 
    geom_point(aes(shape = variable), size=3) + 
    ggtitle("Age groups of people between 2006 and 2013") + 
    theme(legend.title=element_blank(), 
     legend.justification = c(0.6, 0.6), 
     legend.position = c(0.95, 0.95), 
     legend.text = element_text(size = 9), 
     axis.text = element_text(size = 9), 
     axis.title = element_text(size = 9), 
     plot.title = element_text(size = 9)) 

作为一个侧面说明,而不是element_text(size = 9)所有的手动设置,多数主题采取base_size参数,所以使用theme_grey(9)theme_classic(9)会做的大部分工作,为您。您可能仍然需要调整标题。

+0

完美,谢谢。 – paulvr