2013-06-16 3 views
0

Я пытаюсь создать гистограмму с knitr и tikzDevice для представления лучей.Невозможно сгенерировать сгруппированную гистограмму с помощью knitr с использованием tikz в лучах

Я уже сгенерировал гистограмму с помощью консоли в R-studio, так что кажется, что данные отформатированы правильно, но компилируют документ (используя R-studio) с опцией (или «dev = pdf», если на то пошло) просто создает пустой слайд с заголовком и без ошибок (насколько я могу судить).

Данные выглядит следующим образом:

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} 
+0

Итак, после того, как возился с немного R-Studio, я понял, что презентация Безразлично 't скомпилировать с knitr и найти ошибку 'Выход из строк 61-62 (test_knitr.Rnw) Ошибка в auto_exts [x]: недопустимый тип индекса« замыкание »Вызовы: knit ... process_group.block -> call_block -> block_exec - > dev2ext' – Hantabaru

+0

Только для уточнения: теперь я обновился до версии 1.2.10, чтобы проверить, не является ли это ошибкой, и никаких изменений в ошибке. – Hantabaru

ответ

1

Ну, по-видимому, решил свой вопрос. Не совсем уверен в причине проблемы, но я объясню, как я узнал, что не работает.

Как обычно, в этих ситуациях мне приходилось начинать с того, что спаривание кода было простым, но в этом случае оставалось только шаблон шаблона без языковых пакетов.

Затем я добавил один кусок кода только с простым названием ярлыка и устройством <<nrone,dev='tikz'>>=, убедившись, что оставьте одиночные кавычки вокруг 'tikz'.

Затем я постепенно добавлял элементы в кусок кода, начиная с импорта данных.

Когда я импортировал данные, я удалил строки с 2010-2012 в столбце histdata$Ar, чтобы упростить график, а затем постепенно добавлен в отсутствующие данные, когда я был уверен, что он скомпилирован.

При добавлении данных я также добавил дополнительные настройки к линии ggplot, чтобы правильно группировать данные, сделать цветовую схему черно-белой и наклонить метки по оси x.

Сюжет был немного большим, поэтому я добавил в настройках out.width, чтобы подогнать его и поставить cache=FALSE к Makesure это было освежающе снимок каждый раз, когда я скомпилированный, а также 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} 

Я надеюсь, что это помогает кто-то в подобной ситуации :-)

+0

Я очень уверен, что ошибка была вызвана тем фактом, что у вас не было котировок вокруг 'tikz', то есть вы должны написать' dev = 'tikz'' вместо 'dev = tikz', как указано в документации: http : // Yihui.name/knitr/options –

+0

Вполне возможно. Я думал, что у меня их есть, но я вижу из исходного кода, который я высказывал в вопросе, что они не были включены. – Hantabaru