0

我正在尝试使用 knitr 和 tikzDevice 生成直方图以进行投影仪演示。

我已经使用 R-studio 中的控制台生成了直方图,因此看起来数据格式正确,但使用dev=tikz选项(或“dev=pdf”)编译文档(使用 R-studio)只会产生空白带标题的幻灯片,没有错误(据我所知)。

数据如下所示:

   Dag Okt   Ar Bes
1    M   K 2009 522
2    M  Vm 2009  89
3    T   A 2009   0
4    T  Sg 2009 252
5    T  SS 2009   0
6    O  Vo 2009   0
7    O  St 2009 238
8    O   B 2009 107
9   To  Vt 2009 249
10  To  Tu 2009 121
11   F  Sk 2009 415
12   F  Tt 2009   0
13   M   K 2010 558
14   M  Vm 2010 283
15   T   A 2010  36
16   T  Sg 2010 211
17   T  SS 2010   0
18   O  Vo 2010   0
19   O  St 2010 381
20   O   B 2010 164
21  To  Vt 2010 260
22  To  Tu 2010  99
23   F  Sk 2010 397
24   F  Tt 2010  19
25   M   K 2011 571
26   M  Vm 2011 302
27   T   A 2011 273
28   T  Sg 2011 183
29   T  SS 2011  84
30   O  Vo 2011   0
31   O  St 2011 368
32   O   B 2011  53
33  To  Vt 2011 298
34  To  Tu 2011  92
35   F  Sk 2011 346
36   F  Tt 2011  30
37   M   K 2012 479
38   M  Vm 2012 382
39   T   A 2012 146
40   T  Sg 2012 181
41   T  SS 2012  57
42   O  Vo 2012  83
43   O  St 2012 379
44   O   B 2012  54
45  To  Vt 2012 507
46  To  Tu 2012 173
47   F  Sk 2012 238
48   F  Tt 2012  55

代码是:

\documentclass{beamer}
\usepackage[norsk]{babel}
\usepackage[utf8]{inputenc}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{pgf}
\usepackage{tikz}

\mode<presentation>
{
  \usetheme{Frankfurt}
  % or ...

  \setbeamercovered{transparent}
  % or whatever (possibly just delete it)
}



\title[]{Title}

\subtitle{} % (optional)


\title{Title}
\author{JB}
\date{\today}
\if pdf
\pdfinfo {
  /Author (JB)
  /Title (Title)
  /Subject ()
  /Keywords ()
  /CreationDate (D:20130531)
}
\fi
\begin{document}

\maketitle

\section{Intro}
\begin{frame}
\frametitle{Test}
\begin{itemize}
\item Test
\end{itemize}
\end{frame}


\section{Data}

% Hidden R code chunk --- reading in the data
<<setup, echo=FALSE,message=FALSE>>=
require(ggplot2)
require(tikzDevice)
histdata<-read.csv("data.csv")
histdata$Ar<-factor(histdata$Ar)
@

\begin{frame}
<<histogram,echo=FALSE,dev=tikz,cache=FALSE>>=
ggplot(histdata,aes(x=Dag,y=Bes,fill=Ar))+geom_bar(position="dodge",stat="identity")+ scale_fill_grey(start=0.8, end=0)
@
\end{frame}
\end{document}
4

1 回答 1

1

好吧,我似乎已经解决了我自己的问题。不太确定问题的原因,但我会解释我是如何发现它不起作用的。

在这些情况下,像往常一样,我必须首先将代码与基本要素配对,在这种情况下,只剩下没有语言包的 beamer 模板。

然后,我添加了只有一个简单标签名称的单个代码块,并且设备<<nrone,dev='tikz'>>=确保我将单引号放在'tikz'.

然后我逐渐将元素添加到代码块中,从导入数据开始。

当我导入数据时,我删除了列中带有 2010-2012 的行histdata$Ar以简化绘图,然后当我确定它已编译时逐渐添加缺失的数据。

在添加数据的同时,我还在 ggplot 行中添加了额外的设置以正确分组数据,使配色方案为黑白,并在 x 轴上倾斜标签。

情节有点大,所以我在out.width设置中添加以使其适合并确保cache=FALSE每次编译时它都会刷新图片,并echo=FALSE,message=FALSE删除无关的文本。

然后,我将代码块一分为二,将数据导入一个代码块中,并将数据绘制到第二个代码块中。

经历了这个过程,我意识到我不需要require(tikzDevice)以前的 .

修正后的代码如下:

\documentclass{beamer}
\usepackage[norsk]{babel}
\usepackage[utf8]{inputenc}
\usepackage{times}
\usepackage[T1]{fontenc}

\mode<presentation>
{
  \usetheme{Frankfurt}
  % or ...

  \setbeamercovered{transparent}
  % or whatever (possibly just delete it)
}



\title[]{Title}

\subtitle{} % (optional)


\title{Title}
\author{JB}
\date{\today}
\if pdf
\pdfinfo {
  /Author (JB)
  /Title (Title)
  /Subject ()
  /Keywords ()
  /CreationDate (D:20130531)
}
\fi
\begin{document}

\maketitle


% Hidden R code chunk --- reading in the data
<<setup, echo=FALSE,message=FALSE>>=
require(ggplot2)
histdata<-read.csv("data.csv")
histdata$Ar<-factor(histdata$Ar)
@

\begin{frame}
<<histogram,echo=FALSE,message=FALSE,dev='tikz',cache=FALSE,out.width='.8\\textwidth'>>=
ggplot(histdata,aes(x=Okt,y=Bes,fill=Ar)) + geom_bar(position="dodge",stat='identity') +  scale_fill_grey(start=0.8, end=0) + theme(axis.text.x = element_text(angle=30, hjust=1, vjust=1))
@
\end{frame}
\end{document}

我希望这可以帮助处于类似情况的人:-)

于 2013-06-17T09:44:32.520 回答