我对knitr的某些行为感到有点困扰。工作示例应显示4个图,所有图表都使用2种不同的绘图方法显示相同的数据。
序言:
\documentclass{article}
前两个图是使用R-base的绘图命令制作的:
<<one.one,fig.width=4,fig.height=3,fil.align='center',fig.show='asis'>>=
par(mar=c(4,4,1,1),mgp=c(2,1,0),cex=0.8)
plot(cars,pch=20,col='darkgray')
@
<<one.two,fig.width=4,fig.height=3,fil.align='center',fig.show='asis'>>=
par(mar=c(4,4,1,1),mgp=c(2,1,0),cex=0.8)
plot(cars,pch=18,col='darkgray')
@
输出由(删除):
给出对于与ggplot2相同的情节,代码示例为:
<<two.one,fig.width=4,fig.height=3,fil.align='center',fig.show='asis'>>=
library(ggplot2)
test1<-ggplot(cars,aes(x=speed,y=dist))
test2<-test1+geom_smooth(method="lm",se=FALSE,color='red',data=fit)
test3<-test2+
ggtitle("") +
geom_point(size=1,colour='red')
test3
@
<<two.two,fig.width=4,fig.height=3,fil.align='center',fig.show='asis'>>=
test1<-ggplot(cars,aes(x=speed,y=dist))
test2<-test1+geom_smooth(method="lm",se=FALSE,color='red',data=fit)
test3<-test2+
ggtitle("") +
geom_point(size=1,colour='red',shape=3)
test3
@
输出(删除):
即使使用tikzDevice也无法解决问题。自去年11月以来,问题一直存在,至少就我记忆中而言。我试着通过阅读Yihui Xie的书,使用他网站上的例子来解决问题但是失败了。
那么:有没有人看到同样的问题,并提出了解决方案?即使是指向某个方向的暗示也可能有所帮助。
我的系统:
Win 7,MikTeX2.9(2016年1月15日更新的软件包),TeXstudio 2.10.6,R3.2.2(软件包于2016年1月15日更新)。
编辑:
正如CL所说,我也正在更新R和包。在下面你找到我的MWE。使用时不显示数据点的问题 pch = 20; pch = 19,geom_point() 只要我没有明确地选择图形设备就是持久的。使用 tikzDevice 并将图表保存到* .tex时,数据点会显示。它们也在放置时显示 dev的= 'tikz' 进入块选项。其他图形设备似乎也可以正常工作。
MWE是:
\documentclass{article}
\usepackage{graphicx}
\usepackage{tikz}
\begin{document}
\begin{verbatim}
this chunk options:
fig.width=4,fig.height=3,fig.align='center',fig.show='asis'
\end{verbatim}
<<one.one,fig.width=4,fig.height=3,fig.align='center',fig.show='asis'>>=
library(knitr)
par(mar=c(4,4,1,1),mgp=c(2,1,0),cex=0.8)
plot(cars,pch=20,col='darkgray')
fit<-lm(dist~speed, data=cars)
abline(fit,lwd=1,col='red')
par(mar=c(4,4,1,1),mgp=c(2,1,0),cex=0.8)
plot(cars,pch=18,col='darkgray')
fit<-lm(dist~speed, data=cars)
abline(fit,lwd=1,col='red')
library(ggplot2)
test1<-ggplot(cars,aes(x=speed,y=dist))
test2<-test1+geom_smooth(method="lm",se=FALSE,color='red',data=fit)
test3<-test2+
ggtitle("") +
geom_point(size=1,colour='red')
test3
test1<-ggplot(cars,aes(x=speed,y=dist))
test2<-test1+geom_smooth(method="lm",se=FALSE,color='red',data=fit)
test3<-test2+
ggtitle("") +
geom_point(size=1,colour='red',shape=3)
test3
@
\begin{verbatim}
next chunk options:
three.one,fig.width=4,fig.height=3,fig.align='center',fig.show='asis'
\end{verbatim}
<<three.one,fig.width=4,fig.height=3,fig.align='center',fig.show='asis'>>=
require(tikzDevice)
tikz("three.one.tex",width=4.2,height=3)
plot(cars,pch=20,col='darkgray')
fit<-lm(dist~speed, data=cars)
abline(fit,lwd=1,col='red')
dev.off()
tikz("four.one.tex",width=4.2,height=3)
test1<-ggplot(cars,aes(x=speed,y=dist))
test2<-test1+geom_smooth(method="lm",se=FALSE,color='red',data=fit)
test3<-test2+
ggtitle("") +
geom_point(size=1,colour='red')
test3
dev.off()
@
\input{three.one.tex}
\input{four.one.tex}
\begin{verbatim}
next chunk options:
five.one,fig.width=4,fig.height=3,fig.align='center',fig.show='asis, dev='tikz'
\end{verbatim}
<<five.one,fig.width=4,fig.height=3,fig.align='center',fig.show='asis',dev='tikz'>>=
plot(cars,pch=20,col='darkgray')
abline(fit,lwd=1,col='red')
test1<-ggplot(cars,aes(x=speed,y=dist))
test2<-test1+geom_smooth(method="lm",se=FALSE,color='red',data=fit)
test3<-test2+
ggtitle("") +
geom_point(size=1,colour='red')
test3
@
\begin{verbatim}
next chunk options:
five.one,fig.width=4,fig.height=3,fig.align='center',fig.show='asis, dev=c('png','pdf')
\end{verbatim}
<<seven.one,fig.width=4,fig.height=3,fig.align='center',fig.show='asis',dev=c('png', 'pdf')>>=
plot(cars,pch=20,col='darkgray')
abline(fit,lwd=1,col='red')
test1<-ggplot(cars,aes(x=speed,y=dist))
test2<-test1+geom_smooth(method="lm",se=FALSE,color='red',data=fit)
test3<-test2+
ggtitle("") +
geom_point(size=1,colour='red')
test3
@
\end{document}
如果这个问题不可复制,我会用它来平和并忽略它。但如果它是可重复的,我很好奇解决方案可能是什么样的。
随着测试,我想出了另一个问题,我发现至少还有一个其他TeX用户也要说明这个问题:Knitr和LaTeX软件包xcolor似乎不是所有朋友中最好的
再次感谢。