我在这里继续发表我的帖子:
Beginner's questions (figures, bibliography) with Sweave/R/LaTeX---my first document
工作代码转载于此:
\documentclass[a4paper]{article}
\usepackage{Sweave} %%%%%%
\begin{document}
<<echo=TRUE>>=
x <- rnorm(100)
xm <- mean(x)
xm
@
<<echo=FALSE>>=
x <- rnorm(100)
xm <- mean(x)
xm
@
<<echo=TRUE>>=
##### Remove all comments from your data file
test.frame<-read.table(file="apples.d",header=T,sep= "")
names(test.frame)
head(test.frame)
class(test.frame)
@
\begin{figure}[htbp]
\begin{center}
\setkeys{Gin}{width=0.5\textwidth}
<<echo=FALSE,fig=TRUE,width=4,height=4>>=
#### Must tell plot where to get the data from. Could also use test.frame$year
with(test.frame,plot(year,value))
@
\end{center}
\end{figure}
\end{document}
以上版本适用于RStudio
(最新)和Tinn-R
(最新),并生成了所需的pdf文档。
问题:
如果我将上述文件命名为goodex.snw
并运行Sweave,则会将文件goodex-004.pdf
与Tinn-R
或RStudio
作为PDF图像剧情。为什么尾随004
?这可以改变吗?
可以生成EPS
个文件吗? Sweave编译为PDF的工具是仅通过(PDF)LaTeX,而不是通过传统的DVI&gt; PS&gt; PDF路线?
在with(test.frame,plot(year,value))
命令窗口中运行命令R
会在y轴上生成更多值,即15000,20000,25000和30000.但是,在Sweave by生成的PDF文件中我的代码在这篇文章的顶部,我没有得到y轴上的所有值(只有15000和25000)。如何直接在代码中控制绘图的大小,以便显示所有必要的y值?
更新:文件apples.d
包含:
#Number of apples I ate
year value
8 12050 #year 2008
9 15292 #year 2009
10 23907 #year 2010
11 33997 #year 2011
答案 0 :(得分:3)
您的示例无法重现,因为我们没有文件apples.d
,所以我们只能猜测为什么情节出错了。请参阅:
How to make a great R reproducible example?
关于如何制作可重复的例子。
请注意,Sweave
不是Rstudio
或Tinn-R
的功能,它是一个R函数(Sweave()
),可以从命令行或参数运行来自R可执行文件。这可能有助于了解您是否正在搜索信息。
关于你的问题:
FILENAME-CHUNKLABEL.pdf
或eps的形式,其中块标签可以设置为Sweave块的选项(它是第一个参数)。如果您没有设置块名称,则会枚举绘图。eps
与eps=true
选项一起使用。我很确定默认情况下会生成eps和pdf。至于编译,Sweave本身不编译,它会创建一个.tex
文件,您可以以任何方式使用它。在R 2.14中,有一个选项可以自动在生成的.tex文件上运行pdfLaTeX。 Rstudio
和Tinn-R
编译的方式可能是在Sweave之后使用pdfLaTeX调用。如果您想以不同方式执行此操作,可以手动执行此操作。xlim
和ylim
参数设置图表的限制,但这不应该是错误的。回复编辑过的数据问题。首先只是一个提示。这种提供数据的方式并不是最有用的方法。我们当然可以重现这一点,但如果您以我们可以立即运行的方式提供数据,则会更容易。 e.g:
test.frame<-data.frame(year=8:11, value= c(12050,15292,23907,33991))
关于情节,你的意思是y轴上的标签?这可以通过省略绘图调用中的轴并使用axis()
函数手动设置来更改:
with(test.frame,plot(year,value,axes=FALSE))
axis(1)
axis(2,test.frame$value,las=1)
如果刻度线不是经常在轴上分布的话,这看起来有点奇怪。更好的是:
with(test.frame,plot(year,value,axes=FALSE))
axis(1)
axis(2,seq(10000,35000,by=5000),las=1)