![Plotsizes:使用 R 中的 ggplot2 绘图并使用 tikzdevice](https://linux22.com/image/338560/Plotsizes%EF%BC%9A%E4%BD%BF%E7%94%A8%20R%20%E4%B8%AD%E7%9A%84%20ggplot2%20%E7%BB%98%E5%9B%BE%E5%B9%B6%E4%BD%BF%E7%94%A8%20tikzdevice.png)
我对 R 和 LaTeX 完全是个新手,现在正试图写我的硕士论文……我试图通过以下方式得到答案cran.r-项目...但我失败了... :(
我正在通过 ggplot2 在 R 中创建图,并通过 tikzDevice 将它们转换为 TeX 格式。
现在,我的许多图的右侧都有一个图例,其大小有所不同(当然取决于图例的标题和文本)。
如果我现在使用转换我的 Rplot
tikz(file = "my_output_file.tex", standAlone=F,width = 6, height = 4)
它仅缩放其创建的整个图像的尺寸。
我想要的是:所有地块的矩形地块本身的尺寸始终相同......
我的 Rscript 带有一些测试数据:
library(ggplot2)
library(scales)
require(grid)
library(tikzDevice)
#setting time zone
options(tz="Europe/Berlin")
tikz(file = "my_output_file.tex", standAlone=F,width = 6, height = 3)
cars['dt'] = seq(Sys.Date(),Sys.Date()-980,-20)
plot <- ggplot(cars,aes(y=speed,x=dist,color=as.integer(dt)))+
geom_point(size=2,alpha=0.7)+
xlab("distance")+
ylab("speed")+
scale_color_gradientn("dt",
colours=rainbow(6)
)+
#textsize
theme_bw()+
theme(legend.position="right",
legend.key.height=unit(2,"lines"),
legend.title=element_text(size=rel(0.8)),
legend.text=element_text(size=rel(0.8)),
axis.text.y=element_text(angle=90,
hjust=0.5),
axis.title=element_text(size=rel(0.8))
print(plot)
dev.off()
我希望有人可以帮助我,或者给我提供我需要的信息......
- - - - 编辑: - - - -
我设法通过输入来设置图的大小相等
aspect.ratio = 2/(1+sqrt(5))
到我的Rplot的主题()。
那么,为什么 LaTex 仍然无法正确定位呢?
这是我的 LaTeX 代码:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}[h]
\setlength{\abovecaptionskip}{-15pt}
\raggedright
\input{my_output_file1.tex}
\caption{Some long and useful Caption text}
\label{plot:cars}
\end{figure}
\begin{figure}[h]
\setlength{\abovecaptionskip}{-15pt}
\raggedright
\input{my_output_file2.tex}
\caption{Some even longer and more useful Caption text, just to see how it looks like}
\label{plot:cars2}
\end{figure}
\end{document}
我已经尝试用 flush- 替换 raggedright,尝试将 [h] 替换为 \begin{figure}[l]...当我设置 \centering 时,绘图位置甚至没有改变。
也尝试过这使用 op <- par(mar = rep(1, 4)) 的几个不同值来消除绘图周围可能出现的空白……但它根本没有改变……
我遗漏了什么?为什么它明显向右对齐?
答案1
可以使用以下方法调节绘图大小
aspect.ratio = 2/(1+sqrt(5)
如上所述这里 (在上面的评论中,我复制了错误的来源。抱歉。)
在代码中:
tikz(file = "my_output_file1.tex",
standAlone=F,
width = 7,
height = 3,
)
cars['dt'] = seq(Sys.Date(),Sys.Date()-980,-20)
plot1 <- ggplot(cars,aes(y=speed,x=dist,color=as.integer(dt)))+
geom_point(size=2,alpha=0.7)+
xlab("distance")+
ylab("speed")+
scale_color_gradientn("dt",
colours=rainbow(6)
)+
#textsize
theme_bw()+
theme(legend.position="right",
legend.key.height=unit(2,"lines"),
legend.title=element_text(size=rel(0.8)),
legend.text=element_text(size=rel(0.8)),
axis.text.y=element_text(angle=90,
hjust=0.5),
axis.title=element_text(size=rel(0.8)),
aspect.ratio = 2/(1+sqrt(5))
)
print(plot1)
dev.off()
关于定位……还在疑惑……