您的位置:首页 > 编程语言

R-Latex sweave 如何隐藏R代码

2016-01-04 19:10 369 查看
问题:
R导出结果时,如何将R的code隐藏掉,但显示需要显示部分,如只显示图片,隐藏gglot(data,aes(x=“”,y=“”))+geom_bar(state=“”)代码

方法:
采用R与latex相结合,调用sweave方法,生成pdf文件

step1:
配置环境
R中加载utils包,library(utils),因为需要使用包里的sweave()函数;
latex设定好sweave包,方法:打开Miktex下的 settings( admin),点击roots,点击add,将path设置为C:\Program Files\R\R-3.2.0\share\texmf,点击确定

step2:
在latex下建立.snw文件如下,该文件中包含R code,echo=false语句可以将代码隐藏,fig=true语句使图像显示,后保存为ggplot-01-04.Snw,格式为.Snw 或.Rnw
\documentclass[UTF8,10pt,a4paper]{article}
\title{A Test R-Latex Document}
\author{Siyuan Mao}
\usepackage{Sweave}
\SweaveOpts{pdf=TRUE, eps=FALSE}

\begin{document}
\maketitle
<<echo=false, results=hide>>=
library(data.table)
library(ggplot2)
library(scales)
library(gcookbook)
library(plyr)
library(zoo)
library(gridExtra)
library(lubridate)
library(caTools)
library(knitr)
library('RODBC')
setwd("C:\\Users\\msy\\Documents\\work\\latex")

mm<-read.csv("anshan-ershouqiche.csv",header=T,stringsAsFactors = FALSE)
julian_date <- mm$julian_date
julian_date <- ymd(julian_date)
julian_date <- as.Date(julian_date)

pv <- mm$pv
uv<- mm$uv
naad <- mm$naad
user_num <-mm$user_num

pv_pic<-ggplot(mm)+geom_line(aes(as.Date(ymd(as.factor(julian_date))),pv),colour = 4,size=0.5,alpha=0.7)+
geom_point(aes(as.Date(ymd(as.factor(julian_date))),pv),colour = 4,size=0.5,alpha=0.7)+
scale_x_date(labels = date_format("%y/%m/%d"),breaks='3 month')+
theme_bw()+
ggtitle("pv")+
theme(axis.title.x=element_blank(),
axis.title.y=element_blank(),
axis.text.x=element_text(angle=45,hjust=1),
plot.title=element_text(size=20,family="Times",face="bold.italic",color=4),
panel.border=element_blank(),
axis.line=element_line(color="gray",size=1))
uv_pic<-ggplot(mm)+geom_line(aes(as.Date(ymd(as.factor(julian_date))),uv),colour = 4,size=0.5,alpha=0.7)+
geom_point(aes(as.Date(ymd(as.factor(julian_date))),uv),colour = 4,size=0.5,alpha=0.7)+
scale_x_date(labels = date_format("%y/%m/%d"),breaks='3 month')+
theme_bw()+
ggtitle("uv")+
theme(axis.title.x=element_blank(),
axis.title.y=element_blank(),
axis.text.x=element_text(angle=45,hjust=1),
plot.title=element_text(size=20,family="Times",face="bold.italic",color=4),
panel.border=element_blank(),
axis.line=element_line(color="gray",size=1))
naad_pic<-ggplot(mm)+geom_line(aes(as.Date(ymd(as.factor(julian_date))),naad),colour = 4,size=0.5,alpha=0.7)+
geom_point(aes(as.Date(ymd(as.factor(julian_date))),naad),colour = 4,size=0.5,alpha=0.7)+
scale_x_date(labels = date_format("%y/%m/%d"),breaks='3 month')+
theme_bw()+
ggtitle("naad")+
theme(axis.title.x=element_blank(),
axis.title.y=element_blank(),
axis.text.x=element_text(angle=45,hjust=1),
plot.title=element_text(size=20,family="Times",face="bold.italic",color=4),
panel.border=element_blank(),
axis.line=element_line(color="gray",size=1))
user_pic<-ggplot(mm)+geom_line(aes(as.Date(ymd(as.factor(julian_date))),user_num),colour = 4,size=0.5,alpha=0.7)+
geom_point(aes(as.Date(ymd(as.factor(julian_date))),user_num),colour = 4,size=0.5,alpha=0.7)+
scale_x_date(labels = date_format("%y/%m/%d"),breaks='3 month')+
theme_bw()+
ggtitle("user")+
theme(axis.title.x=element_blank(),
axis.title.y=element_blank(),
axis.text.x=element_text(angle=45,hjust=1),
plot.title=element_text(size=20,family="Times",face="bold.italic",color=4),
panel.border=element_blank(),
axis.line=element_line(color="gray",size=1))

##################### num_ding & demand by factor (service_type_id# product,num # days)######################################################################################

service_type_id <- mm$service_type_id
service_type_id <- as.factor(service_type_id)
num <- mm$num
num <- as.factor(num)
num_ding <- mm$num_ding
demand <- mm$demand

numding_num_pic <- ggplot(mm)+geom_bar(aes(as.Date(ymd(as.factor(julian_date))),num_ding,colour=as.factor(num),order=as.numeric(num)),stat="identity",alpha=0.8,size=0.1)+
scale_x_date(labels = date_format("%y/%m/%d"),breaks='3 months') +
theme_bw()+
ggtitle("num_ding by num")+
theme(axis.title.x=element_blank(),
axis.title.y=element_blank(),
axis.text.x=element_text(angle=45,hjust=1),
legend.position="bottom",
plot.title=element_text(size=20,family="Times",face="bold.italic",color=4),
panel.border=element_blank(),
axis.line=element_line(color="gray",size=1))+
labs(colour="num")
numding_ser_pic <- ggplot(mm)+geom_bar(aes(as.Date(ymd(as.factor(julian_date))),num_ding,color=as.factor(service_type_id),order=as.numeric(service_type_id)),stat="identity",alpha=0.3,size=0.1)+
scale_x_date(labels = date_format("%y/%m/%d"),breaks='3 months') +
theme_bw()+
ggtitle("num_ding by service")+
theme(axis.title.x=element_blank(),
axis.title.y=element_blank(),
axis.text.x=element_text(angle=45,hjust=1),
legend.position="bottom",
plot.title=element_text(size=20,family="Times",face="bold.italic",color=4),
panel.border=element_blank(),
axis.line=element_line(color="gray",size=1))+
labs(colour="service_type")

price <- mm$price[which(mm$num ==7)]

price_pic<-ggplot(mm)+geom_point(aes(as.Date(ymd(as.factor(julian_date))),price,color=as.factor(service_type_id),order=as.numeric(service_type_id)),stat="identity",alpha=0.3,size=0.8)+
scale_x_date(labels = date_format("%y/%m/%d"),breaks='3 months')+
theme_bw()+
ggtitle("price")+
theme(axis.title.x=element_blank(),
axis.title.y=element_blank(),
axis.text.x=element_text(angle=45,hjust=1),
legend.position="bottom",
plot.title=element_text(size=20,family="Times",face="bold.italic",color=4),
panel.border=element_blank(),
axis.line=element_line(color="gray",size=1)) +
labs(color="service_type")

##########################################  acc_rev  & cash_rev   by factor     ##################################################################################
acc_rev <- mm$acc_rev
cash_rev <- mm$cash_rev

acc_rev_num_pic <- ggplot(mm)+geom_bar(aes(as.Date(ymd(as.factor(julian_date))),acc_rev,color=as.factor(num),order=as.numeric(num)),stat="identity",alpha=0.3,size=0.1)+
scale_x_date(labels = date_format("%y/%m/%d"),breaks='3 months') +
ggtitle("acc_rev by num")+
theme_bw()+
theme(axis.title.x=element_blank(),
axis.title.y=element_blank(),
axis.text.x=element_text(angle=45,hjust=1),
legend.position="bottom",
plot.title=element_text(size=20,family="Times",face="bold.italic",color=4),
panel.border=element_blank(),
axis.line=element_line(color="gray",size=1)) +
labs(color="num")

acc_rev_ser_pic<- ggplot(mm)+geom_bar(aes(as.Date(ymd(as.factor(julian_date))),acc_rev,color=as.factor(service_type_id),order=as.numeric(service_type_id)),stat="identity",alpha=0.3,size=0.1)+
scale_x_date(labels = date_format("%y/%m/%d"),breaks='3 months') +
ggtitle("acc_rev by service")+
theme_bw()+
theme(axis.title.x=element_blank(),
axis.title.y=element_blank(),
axis.text.x=element_text(angle=45,hjust=1),
legend.position="bottom",
plot.title=element_text(size=20,family="Times",face="bold.italic",color=4),
panel.border=element_blank(),
axis.line=element_line(color="gray",size=1)) +
labs(color="service type")
@

\section{Traffic}
the picture of pv and uv

<<fig=TRUE, results=hide, echo=false, fig.align="center">>=
grid.arrange(pv_pic,uv_pic,ncol=1)
@
\section{Naad and User}
<<fig=TRUE, results=hide, echo=false, fig.align="center">>=
grid.arrange(naad_pic,user_pic,ncol=1)
@
\section{The num of ding}
<<fig=TRUE, results=hide, echo=false, fig.align="center">>=
grid.arrange(numding_num_pic,numding_ser_pic, ncol=1)
@
\section{Price}
<<fig=TRUE, results=hide, echo=false, fig.align="center">>=
grid.arrange(price_pic, ncol=1)
@
\section{Revenue}
<<fig=TRUE, results=hide, echo=false, fig.align="center">>=
grid.arrange(acc_rev_num_pic,acc_rev_ser_pic, ncol=1)
@

the end,thanks!
\end{document}

step3:
在R中采用sweave函数,运行ggplot-01-04.Snw,后生成ggplot-01-04.tex文件
library(utils)
setwd("C:\\Users\\msy\\Documents\\work\\latex")
#data<-read.csv("gezi.csv")
Sweave("ggplot-01-04.Snw")

step4:
打开R运行后生成的ggplot-01-04.tex文件,点击运行,最后生成所需的pdf
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: