I created a report using knitR (.Rnw) to compile it as a PDF. As I would like to plot the same figure for every single questions I created a plot in a for-loop. Unfortunately I get a warning in the PDF and don´t realy get what causes the error...
Here is the chunk where I believe the problem starts: the loop runs fine within R but does not compile as a PDF (see the whole code below). I tried various labels, print functions and other stuff but couldn´t find a solution.
<<echo=FALSE, warning=T, message=F>>=
for(i in 1:3){
cat(paste("\\subsection{",titel[i],"}\n", sep=""))
cat(paste("Figure \\ref{class",i,"} \n", sep=""))
cat(paste("\\begin{figure}[H] \n", sep=""))
cat(paste("\\begin{center} \n", sep=""))
cat(paste("\\includegraphics[width=1\\textwidth,",
"height=.47\\textheight,keepaspectratio]{class",i,".pdf}\\caption{",titel[i],"}\n", sep=""))
cat(paste("\\label{class",i,"}" \n, sep=""))
cat(paste("\\end{center} \n",sep=""))
cat(paste("\\end{figure} \n",sep=""))
p <- ggplot(data[!is.na(data$F17),], aes_string(x=Fragen[i], y="..prop..", group = "1", fill="F17"))+
geom_bar()+
facet_grid(F17~.)+
geom_text(aes(label = scales::percent(..prop..),
y= ..prop.. ), stat= "count", vjust = -.5, size=3) +
ylab("Prozent")+
xlab(titel[i])+
scale_fill_manual(name="Individuals", values=colorScheme)#+
#theme_mine
pdfnam<-paste("class",i,".pdf",sep="") #produce a plot for each class
pdf(file=pdfnam,width=12, height = 4)
#gridExtra::grid.arrange(p, q)
print(p)
dev.off()
}
@
Here is the whole code for replication:
\documentclass{article}
\usepackage{amsmath,amssymb,amstext}
\usepackage{graphicx}
\usepackage{geometry}
\geometry{top=15mm, left=25mm, right=25mm, bottom=25mm,headsep=10mm,footskip=10mm}
\usepackage{xcolor}
\usepackage{float}
\usepackage[T1]{fontenc} % Umlaute
\usepackage[utf8]{inputenc}
\inputencoding{latin1}
\begin{document}
\parindent 0pt
\title{title}
\maketitle
<<echo=FALSE, warning=FALSE, message=FALSE>>=
library(ggplot2)
library(reshape)
library(knitr)
library(doBy)
library(dplyr)
opts_chunk$set(fig.path='figure/graphic-', fig.align='center', fig.show='hold',fig.pos='!ht',
echo=FALSE,warning = FALSE)
@
<<echo=FALSE, warning=FALSE, message=F>>=
# data and other useful stuff
data <- data.frame(F1 = c("A", "A", "B", "C"), # answers to question 1, ...
F2 = c("A", "B", "B", "C"),
F3 = c("A", "B", "C", "C"),
F17 = c("K", "L", "L", "M")) # K, L and M are a certain individual. L answered twice.
# colour scheme:
GH="#0085CA"; H="#DA291C"; BV="#44697D"
colorScheme <- c(BV, H, GH)
# individual theme for plots:
theme_mine = theme(plot.background = element_rect(fill = "white"),
panel.background = element_rect(fill = "white", colour = "grey50"),
text=element_text(size=10, family="Trebuchet MS"))
# a vector with the variable names from "data" (F1, F2, F3).
Fragen <- c(paste0('F',seq(1:3), sep=""))
# question title for labeling the plots:
titel <- c("Q1", "Q2", "Q3", "Q17")
@
\begin{figure}[h]
\begin{center}
<<echo=FALSE, fig.width=9.6, fig.height=6, warning=FALSE>>=
p <- ggplot(data, aes(x=F17))+
geom_bar(fill = colorScheme)+
xlab(titel[4])+
#geom_text(aes(label = scales::percent(..prop..),
# y= ..prop.. ), stat= "count", vjust = -.5, size=3) +
ylab("Absolut")+
theme_bw()
#theme_mine # does not work properly yet.
p
@
\caption{figa}
\label{figa}
\end{center}
\end{figure}
\section{individual plots}
<<echo=FALSE, warning=T, message=F>>=
# here is where the problem starts: the loop runs fine within R but does not compile to an PDF.
for(i in 1:3){
cat(paste("\\subsection{",titel[i],"}\n", sep=""))
cat(paste("Figure \\ref{class",i,"} \n", sep=""))
cat(paste("\\begin{figure}[H] \n", sep=""))
cat(paste("\\begin{center} \n", sep=""))
cat(paste("\\includegraphics[width=1\\textwidth,",
"height=.47\\textheight,keepaspectratio]{class",i,".pdf}\\caption{",titel[i],"}\n", sep=""))
cat(paste("\\label{class",i,"}" \n, sep=""))
cat(paste("\\end{center} \n",sep=""))
cat(paste("\\end{figure} \n",sep=""))
p <- ggplot(data[!is.na(data$F17),], aes_string(x=Fragen[i], y="..prop..", group = "1", fill="F17"))+
geom_bar()+
facet_grid(F17~.)+
geom_text(aes(label = scales::percent(..prop..),
y= ..prop.. ), stat= "count", vjust = -.5, size=3) +
ylab("Prozent")+
xlab(titel[i])+
scale_fill_manual(name="Individuals", values=colorScheme)#+
#theme_mine
pdfnam<-paste("class",i,".pdf",sep="") #produce a plot for each class
pdf(file=pdfnam,width=12, height = 4)
#gridExtra::grid.arrange(p, q)
print(p)
dev.off()
}
@
\end{document}
Thanks a lot in advance!