R / Sweave: префикс и имя файла рисунка - PullRequest
0 голосов
/ 02 декабря 2011

Я новичок в R и намного новее в Sweave, и я экспериментирую с графикой.Вот пример кода:

\documentclass[a4paper]{article}
\usepackage{Sweave}  %%%%%%
\SweaveOpts{eps=true}
\begin{document}

<<echo=FALSE>>=
test.frame<-data.frame(year=8:11, value= c(12050,15292,23907,33991))
@

\SweaveOpts{prefix.string=Evolution}
<<label=amount,echo=FALSE,results=hide>>=
postscript('doudou.eps',
            width=6, height=7,
            colormodel="cmyk",
            family = "ComputerModern")
with(test.frame,plot(year, value))
dev.off()
@

\begin{figure}[htbp]
\begin{center}
\includegraphics[width=1\textwidth,angle=90]{doudou.eps}
\end{center}
\end{figure}

\end{document}

What I want to do above?

Чтобы иметь ручной контроль над файлом EPS, который я вставляю, чтобы я мог иметь команду \includegraphics вSweave сам файл.

И я пытаюсь дать правильное имя файла фигуре: с префиксом Evolution и меткой amount, чтобы полученная фигура EPS была названа Evolution-amount.eps.

What is going wrong?

Как видите, я вставляю имя файла в опцию R postscript, т.е. doudou.eps.Если я этого не сделаю, файл с именем Rplots.ps будет создан с помощью R.

Так что мой код игнорирует префикс и метку, которые я хочу присвоить моему файлу рисунков.

И позже я явно прошу \includegraphics поставить doudou.eps.

How I want it to be?

Чтобы иметь возможность иметь префикс и метку, как я упоминал выше в файле рисунковимя, хотя у меня все еще есть ручное управление командой \includegraphics в файле Sweave.Возможно ли это?

What is the use of this?

Скажем, я пишу статью, и у меня есть рисунки в разных разделах.Поэтому было бы неплохо иметь что-то вроде:

\SweaveOpts{prefix.string=Paper2}

<<label=section2,echo=FALSE,results=hide>>=

и, например, я указываю в опции postscript: model.eps.

Тогда фигура будет названа, например, Paper2-section2.model.eps.Это возможно?

И мне нужно было бы как-то вручную поставить это имя ??в следующей команде \includegraphics.

Большое спасибо ...


Обновление: 09 декабря 2011 г.

Близкое решение с помощью cbeleites:

\documentclass[fleqn, a4paper,12pt]{article}
\usepackage[latin1]{inputenx}
\usepackage[T1]{fontenc}
\usepackage{Sweave} %%%%%%
\SweaveOpts{eps=TRUE}



\begin{document}

<<echo=FALSE>>=
test.frame<-data.frame(year=8:11, value= c(12050,15292,23907,33991))
@

\SweaveOpts{prefix.string=Paper2}

<<label=section2, echo=FALSE,results=hide>>=
ps.options ( width=6, height=7, colormodel="cmyk", family = "ComputerModern")
@


<<label=section2, fig=TRUE, include = TRUE, echo=FALSE>>=
with(test.frame,plot(year, value))
@

\end{document} 

При компиляции я получаю файлы EPS и PDF с именем Paper2-section2.Я думаю, это настолько близко, насколько мы можем.

1 Ответ

3 голосов
/ 02 декабря 2011

Вам нужно использовать кусок фигуры.

    <<fig=TRUE, include = FALSE>>=
    with(test.frame,plot(year, value))
    @
  • Вы можете передать больше параметров блоку фигуры, таким как ширина и высота.

  • для более продвинутых опций используйте опции postscript R:

    <<>>=
    ps.options (colormodel="cmyk", family = "ComputerModern")
    @
    
  • если параметры применяются только к одной фигуре, вам, вероятно, будет легче без чанка фигуры и с ручным \includegraphics. Однако вы можете указать имя файла для файла ps, как если бы оно было создано фрагментом Sweave figure.

  • Если единственная причина для \includegraphics заключается в том, что вы хотите контролировать его параметры, взгляните на graphicx 'Gin:

    \begin{figure}[htbp]
    \begin{center}
    \setkeys{Gin}{width=\linewidth}
    <<fig=TRUE>>=
    with(test.frame,plot(year, value))
    @
    \end{center}
    \end{figure}
    

Я думал, что Джин тоже будет работать с вращением, но это не так. см. https://tex.stackexchange.com/a/31013 для объяснения и возможного решения. Однако, если поворот происходит только потому, что фигуры появляются вбок (в отличие от того, что вы хотите, чтобы они были вбок), это можно решить с помощью правильных настроек ps в R (RSiteSearch () и ? postscript должны помочь).

...