无法使用编码器中的tikz生成带编织器的分组直方图

时间:2013-06-16 21:11:30

标签: knitr beamer tikz

我正在尝试使用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}

1 个答案:

答案 0 :(得分:1)

好吧,我似乎已经解决了我自己的问题。我不确定问题的原因,但我会解释我是如何找出问题的。

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

然后我添加了单个代码块,只有一个简单的标签名称和设备<<nrone,dev='tikz'>>=,确保我在'tikz'周围加上单引号。

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

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

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

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

然后我将代码块分成两个,在一个代码块中导入数据,然后像以前一样将数据绘制到第二个。

经历了这个过程,我意识到我不需要echo=FALSE,message=FALSE,这是我之前的过程。

更正后的代码如下:

require(tikzDevice)

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