首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TikZDevice:使用R向TikZ图添加\caption{}和\label{}

TikZDevice:使用R向TikZ图添加\caption{}和\label{}
EN

Stack Overflow用户
提问于 2011-06-23 03:31:43
回答 1查看 3.4K关注 0票数 2

我已经创建了一个for循环,它使用tikzDevice包将R中的多个绘图(通过ggplot2)输出到一个.tex文件中。这使得使用指向从R(比如‘diagrams.tex’)输出的.tex文件的单个命令在latex文档中包含多个图表变得更容易:\include{diagrams}

然而,我也想用\begin{figure}环境包装每个like图片,这样我就可以在每个相应的图形中插入另外两行:\caption{}\label{}

问:有没有一种方法可以在输出的.tex文件中直接包含图形包装、标题和label latex命令,用于每个相应的ggplot图像(来自我的R循环)?

这是一个可重复使用的R代码,它生成一个包含3个图的文件'diagrams.tex‘:

代码语言:javascript
复制
require(ggplot2)
require(tikzDevice)

## Load example data frame
A1 = as.data.frame(rbind(c(4.0,1.5,6.1),
c(4.0,5.2,3.5),
c(4.0,3.4,4.3),
c(4.0,8.2,7.3),
c(4.0,2.9,6.3),
c(6.0,3.9,6.6),
c(6.0,1.5,6.1),
c(6.0,2.7,5.3),
c(6.0,2.9,7.4),
c(6.0,3.7,6.0),
c(8.0,3.9,4.2),
c(8.0,4.1,3.5),
c(8.0,3.7,5.8),
c(8.0,2.5,7.5),
c(8.0,4.1,3.5)))
names(A1) = c("state","rmaxpay","urate")

i = 2

## name output file
tikz( 'diagrams.tex' )

for (i in 2:4){     #begin LOOP

st = i*2

df = NULL
df = subset(A1, state == st , select = c(2:3))

print(              # start print

ggplot(df, aes(rmaxpay,urate)) + geom_point() 

  )                 # end print

  }         #end LOOP

dev.off()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-24 00:45:10

可能有一种方法可以使用绘图挂钩执行此操作,但您也可以使用console选项和sink()来执行此操作

代码语言:javascript
复制
require(ggplot2)
require(tikzDevice)

## Load example data frame
A1 = as.data.frame(rbind(c(4.0,1.5,6.1),
c(4.0,5.2,3.5),
c(4.0,3.4,4.3),
c(4.0,8.2,7.3),
c(4.0,2.9,6.3),
c(6.0,3.9,6.6),
c(6.0,1.5,6.1),
c(6.0,2.7,5.3),
c(6.0,2.9,7.4),
c(6.0,3.7,6.0),
c(8.0,3.9,4.2),
c(8.0,4.1,3.5),
c(8.0,3.7,5.8),
c(8.0,2.5,7.5),
c(8.0,4.1,3.5)))
names(A1) = c("state","rmaxpay","urate")

i = 2
fn <- "diagrams.tex"
if(file.exists(fn)) file.remove(fn)

for (i in 2:4){     #begin LOOP

  st = i*2

  df = NULL
  df = subset(A1, state == st , select = c(2:3))

  cat("\\begin{figure}\n", file = fn, append=TRUE)
  sink(fn, append=TRUE)
  tikz(console = TRUE)
    print(              # start print
      ggplot(df, aes(rmaxpay,urate)) + geom_point() 
    )                 # end print
  dev.off()
  sink()
  cat(paste("\\caption{figure}\\label{fig:",i,"}\n",sep=""), file = fn, append=TRUE)
  cat("\\end{figure}\n", file = fn, append=TRUE)

}         #end LOOP
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6445439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档