HJ YAN
2012-Jun-08 02:08 UTC
[R] Resolution issue with exporting plots from R and write tables in Latex code for producing pdf document
Dear R users I am trying to exporting plots from R to an external folder, or to the working directory, but the resolution of plots (pdf file) largely reduced. Any way I can get same quality as my original plots?? e.g. I tested the plotting part using one example and obtained pretty good (/readable) quality for each plot in the (4*4) multiple graph. But when I did the loop and tried to export those plots out using 'dev.copy', the quality was not same. I do need this loop function as there are 400 datasets so I can not handle them manually. Also I am using 'xtable' to write Latex code for my summary tables of the data (again there are 400 datasets). I saved those Latex code in a list and use 'sink()' to save them outside the loop function, which works ok. But as my table is wide, so I found that the Latex code produced by xtable can not fit my purpose well, e.g. I have set size to 'tiny' but the table still too wide. Is there an alternative package more handy to do the job? Also are there a good way to write some hundred tables from R to Latex for producing pdf documents in an easier fashion?? i.e. Just realised that Latex does not like compiling large amount tables/figures in one go! Any advices/ideas are greatly appreciated! Best wishes HJ Below is my code... ====================SumTab<-function(Data=SortedDataInList,StartDate="30/1/12",EndDate="31/05/12",StartTime="22:50:00",EndTime="23:00:00"){ Start= chron(StartDate,StartTime , format=c(dates="d/m/y", times="h:m:s")) End= chron(EndDate,EndTime , format=c(dates="d/m/y", times="h:m:s")) deltat <- times("00:10:00") TT <- seq(Start,End, by = times("00:10:00")) TT1 = substr(TT, 2, 18) Data1=Data for (i in 1:length(Data1)){ SumTab1[[i]]= matrix(NA, nrow=5, ncol=ncol(SortedDataInList[[i]])-4) SortedDataInList1[[i]]= matrix(NA, nrow=length(TT1), ncol=ncol(Data1[[i]])) SortedDataInList1[[i]]=Data1[[i]][match(as.character(TT1),as.character(Data1[[i]][,1])),] SumTab1[[i]][1,]<-apply(SortedDataInList1[[i]][,4:16],2,min) SumTab1[[i]][2,]<-apply(SortedDataInList1[[i]][,4:16],2,mean) SumTab1[[i]][3,]<-apply(SortedDataInList1[[i]][,4:16],2,median) SumTab1[[i]][4,]<-apply(SortedDataInList1[[i]][,4:16],2,sd) SumTab1[[i]][5,]<-apply(SortedDataInList1[[i]][,4:16],2,max) colnames(SumTab1[[i]])=c("vOL1","VOL2","VOL3","CUR1","CUR2","CUR3","THD1","THD2","THD3","RPD","RPR","RAPD","RAPR") rownames(SumTab1[[i]])=c("Min","Mean","Standard Deviation","Median","Max") SumLax[[i]]<-xtable(SumTab1[[i]],label=as.character(StationsInDir[i]),caption=as.character(StationsInDir[i])) par(mfrow=c(4,4),oma=c(4,0,2,0)) plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,4],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Voltage 1 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,5],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Voltage 2 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,6],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Voltage 3 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,7],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Current 1 (A)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,8],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Current 2 (A)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,9],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Current 3 (A)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,10],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Total harmonic distortion 1 (%)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,11],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Total harmonic distortion 2 (%)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,12],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Total harmonic distortion 3 (%)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,13],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Real power delivered (mw)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,14],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Real power received (mw)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,15],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Reactive power delivered (MVAr)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,16],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Reactive power received (MVAr)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) title(main=StationsInDir[i],outer=TRUE,cex.main=2.0) mtext(side=1,Start, outer = TRUE, line=0,cex = 0.6) mtext(side=1,End, outer = TRUE, line=2,cex = 0.6) #pdf(paste(as.character(StationsInDir[i]),".pdf")) dev.copy(pdf,file=paste(as.character(StationsInDir[i]),".pdf")) dev.off() } } [[alternative HTML version deleted]]
Duncan Murdoch
2012-Jun-08 09:21 UTC
[R] Resolution issue with exporting plots from R and write tables in Latex code for producing pdf document
On 12-06-07 10:08 PM, HJ YAN wrote:> Dear R users > > I am trying to exporting plots from R to an external folder, or to the > working directory, but the resolution of plots (pdf file) largely reduced. > Any way I can get same quality as my original plots?? e.g. I tested the > plotting part using one example and obtained pretty good (/readable) > quality for each plot in the (4*4) multiple graph. But when I did the loop > and tried to export those plots out using 'dev.copy', the quality was not > same. I do need this loop function as there are 400 datasets so I can not > handle them manually.Don't use dev.copy. Use pdf() then dev.off() to produce the plots in the first place.> > Also I am using 'xtable' to write Latex code for my summary tables of the > data (again there are 400 datasets). I saved those Latex code in a list and > use 'sink()' to save them outside the loop function, which works ok. But as > my table is wide, so I found that the Latex code produced by xtable can not > fit my purpose well, e.g. I have set size to 'tiny' but the table still too > wide. Is there an alternative package more handy to do the job? Also are > there a good way to write some hundred tables from R to Latex for producing > pdf documents in an easier fashion?? i.e. Just realised that Latex does not > like compiling large amount tables/figures in one go!latex has a lot of packages for handling large tables, but it may be better to redesign your table to not be so wide. The tables package might help with this, but it doesn't have any particular support for wide tables. Duncan Murdoch> > Any advices/ideas are greatly appreciated! > > > Best wishes > HJ > > > > > Below is my code... > ====================> SumTab<-function(Data=SortedDataInList,StartDate="30/1/12",EndDate="31/05/12",StartTime="22:50:00",EndTime="23:00:00"){ > Start= chron(StartDate,StartTime , format=c(dates="d/m/y", times="h:m:s")) > End= chron(EndDate,EndTime , format=c(dates="d/m/y", times="h:m:s")) > deltat<- times("00:10:00") > TT<- seq(Start,End, by = times("00:10:00")) > TT1 = substr(TT, 2, 18) > > > Data1=Data > for (i in 1:length(Data1)){ > SumTab1[[i]]= matrix(NA, nrow=5, ncol=ncol(SortedDataInList[[i]])-4) > SortedDataInList1[[i]]= matrix(NA, nrow=length(TT1), > ncol=ncol(Data1[[i]])) > > SortedDataInList1[[i]]=Data1[[i]][match(as.character(TT1),as.character(Data1[[i]][,1])),] > > > SumTab1[[i]][1,]<-apply(SortedDataInList1[[i]][,4:16],2,min) > SumTab1[[i]][2,]<-apply(SortedDataInList1[[i]][,4:16],2,mean) > SumTab1[[i]][3,]<-apply(SortedDataInList1[[i]][,4:16],2,median) > SumTab1[[i]][4,]<-apply(SortedDataInList1[[i]][,4:16],2,sd) > SumTab1[[i]][5,]<-apply(SortedDataInList1[[i]][,4:16],2,max) > > > > colnames(SumTab1[[i]])=c("vOL1","VOL2","VOL3","CUR1","CUR2","CUR3","THD1","THD2","THD3","RPD","RPR","RAPD","RAPR") > rownames(SumTab1[[i]])=c("Min","Mean","Standard > Deviation","Median","Max") > > > SumLax[[i]]<-xtable(SumTab1[[i]],label=as.character(StationsInDir[i]),caption=as.character(StationsInDir[i])) > > > par(mfrow=c(4,4),oma=c(4,0,2,0)) > > plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,4],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Voltage > 1 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) > > plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,5],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Voltage > 2 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) > > plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,6],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Voltage > 3 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) > > plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,7],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Current > 1 (A)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) > > plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,8],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Current > 2 (A)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) > > plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,9],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Current > 3 (A)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) > > plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,10],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Total > harmonic distortion 1 (%)",xlab="Date/Time ind.(10 min. > int.)",type="p",cex=.001) > > plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,11],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Total > harmonic distortion 2 (%)",xlab="Date/Time ind.(10 min. > int.)",type="p",cex=.001) > > plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,12],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Total > harmonic distortion 3 (%)",xlab="Date/Time ind.(10 min. > int.)",type="p",cex=.001) > > plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,13],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Real > power delivered (mw)",xlab="Date/Time ind.(10 min. > int.)",type="p",cex=.001) > > plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,14],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Real > power received (mw)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) > > plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,15],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Reactive > power delivered (MVAr)",xlab="Date/Time ind.(10 min. > int.)",type="p",cex=.001) > > plot(1:length(SortedDataInList1[[i]][,1]),SortedDataInList1[[i]][,16],xlim=c(1,length(SortedDataInList1[[i]][,1])),ylab="Reactive > power received (MVAr)",xlab="Date/Time ind.(10 min. > int.)",type="p",cex=.001) > title(main=StationsInDir[i],outer=TRUE,cex.main=2.0) > mtext(side=1,Start, outer = TRUE, line=0,cex = 0.6) > mtext(side=1,End, outer = TRUE, line=2,cex = 0.6) > > > #pdf(paste(as.character(StationsInDir[i]),".pdf")) > dev.copy(pdf,file=paste(as.character(StationsInDir[i]),".pdf")) > dev.off() > > } > } > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
HJ YAN
2012-Jun-08 14:42 UTC
[R] Resolution issue with exporting plots from R and write tables in Latex code for producing pdf document
> > Dear Duncan > > Many thanks again for your help! > > Now I've mended my code in the following simplified form: > > > pdf("filename.pdf",paper="a4",width=8,height=12,encoding="default") > par(mfrow=c(2,2)) > > plot(1:length(SortedDataInList1[[3]][,1]),SortedDataInList1[[3]][,4],xlim=c(1,length(SortedDataInList1[[3]][,1])),ylab="Voltage > 1 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.0001) > plot(...) > plot(...) > plot(...) > dev.off() > > And I think that has included all features I need but the outputs I > got only appear to show part of the figures, e.g. the frame, values on > x-axes (e.g. 1:length(SortedDataInList1[[3]][,1])), xlab, ylab, titles, > subtitles are all shown. But not values on y-axes, > e.g. 'SortedDataInList1[[3]][,i]' for i=4,5,6... So just 4 blank frames > with no data in the figure! > > Have I missed to put in some important arguments in this line?? > > pdf("filename.pdf",paper="a4",width=8,height=12,encoding="default") > > > I have tested that the 'middle part' of my code (as shown below) works > fine and I can get the plots as I wanted. > ==============> par(mfrow=c(2,2)) > plot(1:length(SortedDataInList1[[3]][,1]),SortedDataInList1[[3]][,4],xlim=c(1,length(SortedDataInList1[[3]][,1])),ylab="Voltage > 1 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.0001) > plot(...) > plot(...) > plot(...) > ===============> > Many many thanks! > > HJ > > > > > On Fri, Jun 8, 2012 at 11:53 AM, Duncan Murdoch <murdoch.duncan@gmail.com>wrote: > >> On 12-06-08 6:46 AM, yhj204@googlemail.com wrote: >> >>> Dear Duncan >>> >>> >>> >>> Thanks a lot for your hints. >>> >>> As you can see from my code (just one line above the command using >>> dev.copy) I have tried using pdf but got same problem, so I hushed it out. >>> >> >> That's not the right place to put the pdf() call, it should appear before >> any of the graphing calls. To keep the pdf resolution, you need to plot to >> the pdf device. >> >> Duncan Murdoch >> >> >> >>> Any ideas?? >>> >>> Many thanks! >>> >>> HJ >>> Sent using BlackBerry® from Orange >>> >>> -----Original Message----- >>> From: Duncan Murdoch<murdoch.duncan@gmail.**com<murdoch.duncan@gmail.com> >>> > >>> Date: Fri, 08 Jun 2012 05:21:52 >>> To: HJ YAN<yhj204@googlemail.com> >>> Cc: r-help@r-project.org<r-help@r-**project.org <r-help@r-project.org>> >>> Subject: Re: [R] Resolution issue with exporting plots from R and write >>> tables >>> in Latex code for producing pdf document >>> >>> On 12-06-07 10:08 PM, HJ YAN wrote: >>> >>>> Dear R users >>>> >>>> I am trying to exporting plots from R to an external folder, or to the >>>> working directory, but the resolution of plots (pdf file) largely >>>> reduced. >>>> Any way I can get same quality as my original plots?? e.g. I tested the >>>> plotting part using one example and obtained pretty good (/readable) >>>> quality for each plot in the (4*4) multiple graph. But when I did the >>>> loop >>>> and tried to export those plots out using 'dev.copy', the quality was >>>> not >>>> same. I do need this loop function as there are 400 datasets so I can >>>> not >>>> handle them manually. >>>> >>> >>> Don't use dev.copy. Use pdf() then dev.off() to produce the plots in >>> the first place. >>> >>> >>> >>>> Also I am using 'xtable' to write Latex code for my summary tables of >>>> the >>>> data (again there are 400 datasets). I saved those Latex code in a list >>>> and >>>> use 'sink()' to save them outside the loop function, which works ok. >>>> But as >>>> my table is wide, so I found that the Latex code produced by xtable can >>>> not >>>> fit my purpose well, e.g. I have set size to 'tiny' but the table still >>>> too >>>> wide. Is there an alternative package more handy to do the job? Also are >>>> there a good way to write some hundred tables from R to Latex for >>>> producing >>>> pdf documents in an easier fashion?? i.e. Just realised that Latex does >>>> not >>>> like compiling large amount tables/figures in one go! >>>> >>> >>> latex has a lot of packages for handling large tables, but it may be >>> better to redesign your table to not be so wide. The tables package >>> might help with this, but it doesn't have any particular support for >>> wide tables. >>> >>> Duncan Murdoch >>> >>> >>> >>> >>>> Any advices/ideas are greatly appreciated! >>>> >>>> >>>> Best wishes >>>> HJ >>>> >>>> >>>> >>>> >>>> Below is my code... >>>> ====================>>>> SumTab<-function(Data=**SortedDataInList,StartDate="** >>>> 30/1/12",EndDate="31/05/12",**StartTime="22:50:00",EndTime="** >>>> 23:00:00"){ >>>> Start= chron(StartDate,StartTime , format=c(dates="d/m/y", >>>> times="h:m:s")) >>>> End= chron(EndDate,EndTime , format=c(dates="d/m/y", times="h:m:s")) >>>> deltat<- times("00:10:00") >>>> TT<- seq(Start,End, by = times("00:10:00")) >>>> TT1 = substr(TT, 2, 18) >>>> >>>> >>>> Data1=Data >>>> for (i in 1:length(Data1)){ >>>> SumTab1[[i]]= matrix(NA, nrow=5, ncol=ncol(SortedDataInList[[i]** >>>> ])-4) >>>> SortedDataInList1[[i]]= matrix(NA, nrow=length(TT1), >>>> ncol=ncol(Data1[[i]])) >>>> >>>> SortedDataInList1[[i]]=Data1[[**i]][match(as.character(TT1),** >>>> as.character(Data1[[i]][,1])),**] >>>> >>>> >>>> SumTab1[[i]][1,]<-apply(**SortedDataInList1[[i]][,4:16],**2,min) >>>> SumTab1[[i]][2,]<-apply(**SortedDataInList1[[i]][,4:16],**2,mean) >>>> SumTab1[[i]][3,]<-apply(**SortedDataInList1[[i]][,4:16],** >>>> 2,median) >>>> SumTab1[[i]][4,]<-apply(**SortedDataInList1[[i]][,4:16],**2,sd) >>>> SumTab1[[i]][5,]<-apply(**SortedDataInList1[[i]][,4:16],**2,max) >>>> >>>> >>>> >>>> colnames(SumTab1[[i]])=c("**vOL1","VOL2","VOL3","CUR1","** >>>> CUR2","CUR3","THD1","THD2","**THD3","RPD","RPR","RAPD","**RAPR") >>>> rownames(SumTab1[[i]])=c("Min"**,"Mean","Standard >>>> Deviation","Median","Max") >>>> >>>> >>>> SumLax[[i]]<-xtable(SumTab1[[**i]],label=as.character(** >>>> StationsInDir[i]),caption=as.**character(StationsInDir[i])) >>>> >>>> >>>> par(mfrow=c(4,4),oma=c(4,0,2,**0)) >>>> >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** >>>> SortedDataInList1[[i]][,4],**xlim=c(1,length(** >>>> SortedDataInList1[[i]][,1])),**ylab="Voltage >>>> 1 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) >>>> >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** >>>> SortedDataInList1[[i]][,5],**xlim=c(1,length(** >>>> SortedDataInList1[[i]][,1])),**ylab="Voltage >>>> 2 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) >>>> >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** >>>> SortedDataInList1[[i]][,6],**xlim=c(1,length(** >>>> SortedDataInList1[[i]][,1])),**ylab="Voltage >>>> 3 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) >>>> >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** >>>> SortedDataInList1[[i]][,7],**xlim=c(1,length(** >>>> SortedDataInList1[[i]][,1])),**ylab="Current >>>> 1 (A)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) >>>> >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** >>>> SortedDataInList1[[i]][,8],**xlim=c(1,length(** >>>> SortedDataInList1[[i]][,1])),**ylab="Current >>>> 2 (A)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) >>>> >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** >>>> SortedDataInList1[[i]][,9],**xlim=c(1,length(** >>>> SortedDataInList1[[i]][,1])),**ylab="Current >>>> 3 (A)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) >>>> >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** >>>> SortedDataInList1[[i]][,10],**xlim=c(1,length(** >>>> SortedDataInList1[[i]][,1])),**ylab="Total >>>> harmonic distortion 1 (%)",xlab="Date/Time ind.(10 min. >>>> int.)",type="p",cex=.001) >>>> >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** >>>> SortedDataInList1[[i]][,11],**xlim=c(1,length(** >>>> SortedDataInList1[[i]][,1])),**ylab="Total >>>> harmonic distortion 2 (%)",xlab="Date/Time ind.(10 min. >>>> int.)",type="p",cex=.001) >>>> >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** >>>> SortedDataInList1[[i]][,12],**xlim=c(1,length(** >>>> SortedDataInList1[[i]][,1])),**ylab="Total >>>> harmonic distortion 3 (%)",xlab="Date/Time ind.(10 min. >>>> int.)",type="p",cex=.001) >>>> >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** >>>> SortedDataInList1[[i]][,13],**xlim=c(1,length(** >>>> SortedDataInList1[[i]][,1])),**ylab="Real >>>> power delivered (mw)",xlab="Date/Time ind.(10 min. >>>> int.)",type="p",cex=.001) >>>> >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** >>>> SortedDataInList1[[i]][,14],**xlim=c(1,length(** >>>> SortedDataInList1[[i]][,1])),**ylab="Real >>>> power received (mw)",xlab="Date/Time ind.(10 min. >>>> int.)",type="p",cex=.001) >>>> >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** >>>> SortedDataInList1[[i]][,15],**xlim=c(1,length(** >>>> SortedDataInList1[[i]][,1])),**ylab="Reactive >>>> power delivered (MVAr)",xlab="Date/Time ind.(10 min. >>>> int.)",type="p",cex=.001) >>>> >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** >>>> SortedDataInList1[[i]][,16],**xlim=c(1,length(** >>>> SortedDataInList1[[i]][,1])),**ylab="Reactive >>>> power received (MVAr)",xlab="Date/Time ind.(10 min. >>>> int.)",type="p",cex=.001) >>>> title(main=StationsInDir[i],**outer=TRUE,cex.main=2.0) >>>> mtext(side=1,Start, outer = TRUE, line=0,cex = 0.6) >>>> mtext(side=1,End, outer = TRUE, line=2,cex = 0.6) >>>> >>>> >>>> #pdf(paste(as.character(**StationsInDir[i]),".pdf")) >>>> dev.copy(pdf,file=paste(as.**character(StationsInDir[i]),".** >>>> pdf")) >>>> dev.off() >>>> >>>> } >>>> } >>>> >>>> [[alternative HTML version deleted]] >>>> >>>> ______________________________**________________ >>>> R-help@r-project.org mailing list >>>> https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help> >>>> PLEASE do read the posting guide http://www.R-project.org/** >>>> posting-guide.html <http://www.r-project.org/posting-guide.html> >>>> and provide commented, minimal, self-contained, reproducible code. >>>> >>> >>> >> >[[alternative HTML version deleted]]
Duncan Murdoch
2012-Jun-08 15:01 UTC
[R] Resolution issue with exporting plots from R and write tables in Latex code for producing pdf document
On 08/06/2012 10:42 AM, HJ YAN wrote:> > > > Dear Duncan > > > > Many thanks again for your help! > > > > Now I've mended my code in the following simplified form: > > > > > > pdf("filename.pdf",paper="a4",width=8,height=12,encoding="default") > > par(mfrow=c(2,2)) > > > > plot(1:length(SortedDataInList1[[3]][,1]),SortedDataInList1[[3]][,4],xlim=c(1,length(SortedDataInList1[[3]][,1])),ylab="Voltage > > 1 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.0001) > > plot(...) > > plot(...) > > plot(...) > > dev.off()Sorry, but I can't guess what all the missing parts contain. If you can post a simplified, self-contained example, I'll take a look. Duncan Murdoch> > > > And I think that has included all features I need but the outputs I > > got only appear to show part of the figures, e.g. the frame, values on > > x-axes (e.g. 1:length(SortedDataInList1[[3]][,1])), xlab, ylab, titles, > > subtitles are all shown. But not values on y-axes, > > e.g. 'SortedDataInList1[[3]][,i]' for i=4,5,6... So just 4 blank frames > > with no data in the figure! > > > > Have I missed to put in some important arguments in this line?? > > > > pdf("filename.pdf",paper="a4",width=8,height=12,encoding="default") > > > > > > I have tested that the 'middle part' of my code (as shown below) works > > fine and I can get the plots as I wanted. > > ==============> > par(mfrow=c(2,2)) > > plot(1:length(SortedDataInList1[[3]][,1]),SortedDataInList1[[3]][,4],xlim=c(1,length(SortedDataInList1[[3]][,1])),ylab="Voltage > > 1 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.0001) > > plot(...) > > plot(...) > > plot(...) > > ===============> > > > Many many thanks! > > > > HJ > > > > > > > > > > On Fri, Jun 8, 2012 at 11:53 AM, Duncan Murdoch<murdoch.duncan at gmail.com>wrote: > > > >> On 12-06-08 6:46 AM, yhj204 at googlemail.com wrote: > >> > >>> Dear Duncan > >>> > >>> > >>> > >>> Thanks a lot for your hints. > >>> > >>> As you can see from my code (just one line above the command using > >>> dev.copy) I have tried using pdf but got same problem, so I hushed it out. > >>> > >> > >> That's not the right place to put the pdf() call, it should appear before > >> any of the graphing calls. To keep the pdf resolution, you need to plot to > >> the pdf device. > >> > >> Duncan Murdoch > >> > >> > >> > >>> Any ideas?? > >>> > >>> Many thanks! > >>> > >>> HJ > >>> Sent using BlackBerry? from Orange > >>> > >>> -----Original Message----- > >>> From: Duncan Murdoch<murdoch.duncan at gmail.**com<murdoch.duncan at gmail.com> > >>> > > >>> Date: Fri, 08 Jun 2012 05:21:52 > >>> To: HJ YAN<yhj204 at googlemail.com> > >>> Cc: r-help at r-project.org<r-help at r-**project.org<r-help at r-project.org>> > >>> Subject: Re: [R] Resolution issue with exporting plots from R and write > >>> tables > >>> in Latex code for producing pdf document > >>> > >>> On 12-06-07 10:08 PM, HJ YAN wrote: > >>> > >>>> Dear R users > >>>> > >>>> I am trying to exporting plots from R to an external folder, or to the > >>>> working directory, but the resolution of plots (pdf file) largely > >>>> reduced. > >>>> Any way I can get same quality as my original plots?? e.g. I tested the > >>>> plotting part using one example and obtained pretty good (/readable) > >>>> quality for each plot in the (4*4) multiple graph. But when I did the > >>>> loop > >>>> and tried to export those plots out using 'dev.copy', the quality was > >>>> not > >>>> same. I do need this loop function as there are 400 datasets so I can > >>>> not > >>>> handle them manually. > >>>> > >>> > >>> Don't use dev.copy. Use pdf() then dev.off() to produce the plots in > >>> the first place. > >>> > >>> > >>> > >>>> Also I am using 'xtable' to write Latex code for my summary tables of > >>>> the > >>>> data (again there are 400 datasets). I saved those Latex code in a list > >>>> and > >>>> use 'sink()' to save them outside the loop function, which works ok. > >>>> But as > >>>> my table is wide, so I found that the Latex code produced by xtable can > >>>> not > >>>> fit my purpose well, e.g. I have set size to 'tiny' but the table still > >>>> too > >>>> wide. Is there an alternative package more handy to do the job? Also are > >>>> there a good way to write some hundred tables from R to Latex for > >>>> producing > >>>> pdf documents in an easier fashion?? i.e. Just realised that Latex does > >>>> not > >>>> like compiling large amount tables/figures in one go! > >>>> > >>> > >>> latex has a lot of packages for handling large tables, but it may be > >>> better to redesign your table to not be so wide. The tables package > >>> might help with this, but it doesn't have any particular support for > >>> wide tables. > >>> > >>> Duncan Murdoch > >>> > >>> > >>> > >>> > >>>> Any advices/ideas are greatly appreciated! > >>>> > >>>> > >>>> Best wishes > >>>> HJ > >>>> > >>>> > >>>> > >>>> > >>>> Below is my code... > >>>> ====================> >>>> SumTab<-function(Data=**SortedDataInList,StartDate="** > >>>> 30/1/12",EndDate="31/05/12",**StartTime="22:50:00",EndTime="** > >>>> 23:00:00"){ > >>>> Start= chron(StartDate,StartTime , format=c(dates="d/m/y", > >>>> times="h:m:s")) > >>>> End= chron(EndDate,EndTime , format=c(dates="d/m/y", times="h:m:s")) > >>>> deltat<- times("00:10:00") > >>>> TT<- seq(Start,End, by = times("00:10:00")) > >>>> TT1 = substr(TT, 2, 18) > >>>> > >>>> > >>>> Data1=Data > >>>> for (i in 1:length(Data1)){ > >>>> SumTab1[[i]]= matrix(NA, nrow=5, ncol=ncol(SortedDataInList[[i]** > >>>> ])-4) > >>>> SortedDataInList1[[i]]= matrix(NA, nrow=length(TT1), > >>>> ncol=ncol(Data1[[i]])) > >>>> > >>>> SortedDataInList1[[i]]=Data1[[**i]][match(as.character(TT1),** > >>>> as.character(Data1[[i]][,1])),**] > >>>> > >>>> > >>>> SumTab1[[i]][1,]<-apply(**SortedDataInList1[[i]][,4:16],**2,min) > >>>> SumTab1[[i]][2,]<-apply(**SortedDataInList1[[i]][,4:16],**2,mean) > >>>> SumTab1[[i]][3,]<-apply(**SortedDataInList1[[i]][,4:16],** > >>>> 2,median) > >>>> SumTab1[[i]][4,]<-apply(**SortedDataInList1[[i]][,4:16],**2,sd) > >>>> SumTab1[[i]][5,]<-apply(**SortedDataInList1[[i]][,4:16],**2,max) > >>>> > >>>> > >>>> > >>>> colnames(SumTab1[[i]])=c("**vOL1","VOL2","VOL3","CUR1","** > >>>> CUR2","CUR3","THD1","THD2","**THD3","RPD","RPR","RAPD","**RAPR") > >>>> rownames(SumTab1[[i]])=c("Min"**,"Mean","Standard > >>>> Deviation","Median","Max") > >>>> > >>>> > >>>> SumLax[[i]]<-xtable(SumTab1[[**i]],label=as.character(** > >>>> StationsInDir[i]),caption=as.**character(StationsInDir[i])) > >>>> > >>>> > >>>> par(mfrow=c(4,4),oma=c(4,0,2,**0)) > >>>> > >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** > >>>> SortedDataInList1[[i]][,4],**xlim=c(1,length(** > >>>> SortedDataInList1[[i]][,1])),**ylab="Voltage > >>>> 1 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) > >>>> > >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** > >>>> SortedDataInList1[[i]][,5],**xlim=c(1,length(** > >>>> SortedDataInList1[[i]][,1])),**ylab="Voltage > >>>> 2 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) > >>>> > >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** > >>>> SortedDataInList1[[i]][,6],**xlim=c(1,length(** > >>>> SortedDataInList1[[i]][,1])),**ylab="Voltage > >>>> 3 (v)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) > >>>> > >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** > >>>> SortedDataInList1[[i]][,7],**xlim=c(1,length(** > >>>> SortedDataInList1[[i]][,1])),**ylab="Current > >>>> 1 (A)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) > >>>> > >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** > >>>> SortedDataInList1[[i]][,8],**xlim=c(1,length(** > >>>> SortedDataInList1[[i]][,1])),**ylab="Current > >>>> 2 (A)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) > >>>> > >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** > >>>> SortedDataInList1[[i]][,9],**xlim=c(1,length(** > >>>> SortedDataInList1[[i]][,1])),**ylab="Current > >>>> 3 (A)",xlab="Date/Time ind.(10 min. int.)",type="p",cex=.001) > >>>> > >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** > >>>> SortedDataInList1[[i]][,10],**xlim=c(1,length(** > >>>> SortedDataInList1[[i]][,1])),**ylab="Total > >>>> harmonic distortion 1 (%)",xlab="Date/Time ind.(10 min. > >>>> int.)",type="p",cex=.001) > >>>> > >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** > >>>> SortedDataInList1[[i]][,11],**xlim=c(1,length(** > >>>> SortedDataInList1[[i]][,1])),**ylab="Total > >>>> harmonic distortion 2 (%)",xlab="Date/Time ind.(10 min. > >>>> int.)",type="p",cex=.001) > >>>> > >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** > >>>> SortedDataInList1[[i]][,12],**xlim=c(1,length(** > >>>> SortedDataInList1[[i]][,1])),**ylab="Total > >>>> harmonic distortion 3 (%)",xlab="Date/Time ind.(10 min. > >>>> int.)",type="p",cex=.001) > >>>> > >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** > >>>> SortedDataInList1[[i]][,13],**xlim=c(1,length(** > >>>> SortedDataInList1[[i]][,1])),**ylab="Real > >>>> power delivered (mw)",xlab="Date/Time ind.(10 min. > >>>> int.)",type="p",cex=.001) > >>>> > >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** > >>>> SortedDataInList1[[i]][,14],**xlim=c(1,length(** > >>>> SortedDataInList1[[i]][,1])),**ylab="Real > >>>> power received (mw)",xlab="Date/Time ind.(10 min. > >>>> int.)",type="p",cex=.001) > >>>> > >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** > >>>> SortedDataInList1[[i]][,15],**xlim=c(1,length(** > >>>> SortedDataInList1[[i]][,1])),**ylab="Reactive > >>>> power delivered (MVAr)",xlab="Date/Time ind.(10 min. > >>>> int.)",type="p",cex=.001) > >>>> > >>>> plot(1:length(**SortedDataInList1[[i]][,1]),** > >>>> SortedDataInList1[[i]][,16],**xlim=c(1,length(** > >>>> SortedDataInList1[[i]][,1])),**ylab="Reactive > >>>> power received (MVAr)",xlab="Date/Time ind.(10 min. > >>>> int.)",type="p",cex=.001) > >>>> title(main=StationsInDir[i],**outer=TRUE,cex.main=2.0) > >>>> mtext(side=1,Start, outer = TRUE, line=0,cex = 0.6) > >>>> mtext(side=1,End, outer = TRUE, line=2,cex = 0.6) > >>>> > >>>> > >>>> #pdf(paste(as.character(**StationsInDir[i]),".pdf")) > >>>> dev.copy(pdf,file=paste(as.**character(StationsInDir[i]),".** > >>>> pdf")) > >>>> dev.off() > >>>> > >>>> } > >>>> } > >>>> > >>>> [[alternative HTML version deleted]] > >>>> > >>>> ______________________________**________________ > >>>> R-help at r-project.org mailing list > >>>> https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help> > >>>> PLEASE do read the posting guide http://www.R-project.org/** > >>>> posting-guide.html<http://www.r-project.org/posting-guide.html> > >>>> and provide commented, minimal, self-contained, reproducible code. > >>>> > >>> > >>> > >> > > >