Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphics 把R图变成乳胶?_Graphics_R_Latex_Vector Graphics - Fatal编程技术网

Graphics 把R图变成乳胶?

Graphics 把R图变成乳胶?,graphics,r,latex,vector-graphics,Graphics,R,Latex,Vector Graphics,我是R和LaTeX的新手,最近才发现如何使用R绘制标准时间序列图并将其保存为png图像。我担心的是,将其保存为图像,然后将其嵌入乳胶中会使其缩放并使其看起来难看 有没有办法让R的plot()函数输出一个矢量图形并嵌入到LaTeX中?我完全是这两方面的初学者,所以请温柔:)非常感谢代码片段 >你可能想考虑使用。在Swave网站(和其他地方)上有很多关于这方面的优秀文档。它的语法非常简单:只需将R代码放在=和@之间 下面是一个简单的例子: \documentclass[a4paper]{articl

我是R和LaTeX的新手,最近才发现如何使用R绘制标准时间序列图并将其保存为png图像。我担心的是,将其保存为图像,然后将其嵌入乳胶中会使其缩放并使其看起来难看


有没有办法让R的
plot()
函数输出一个矢量图形并嵌入到LaTeX中?我完全是这两方面的初学者,所以请温柔:)非常感谢代码片段

>你可能想考虑使用。在Swave网站(和其他地方)上有很多关于这方面的优秀文档。它的语法非常简单:只需将R代码放在
=
@
之间

下面是一个简单的例子:

\documentclass[a4paper]{article}
\标题{示例1}
\作者{Friedrich Leisch}
\开始{document}
\maketitle
在本例中,我们嵌入了
\texttt{kruskal.test}帮助页插入\LaTeX{}文档:
=
数据(空气质量)
图书馆(ctest)
kruskal.试验(臭氧~月份,数据=空气质量)
@
这表明臭氧层的位置参数
每个月的分布差异很大。最后我们
包括数据的箱线图:
\开始{center}
=
箱线图(臭氧~月份,数据=空气质量)
@
\结束{中心}
\结束{document}

要构建文档,您只需调用
R CMD swave file.Rnw
或从R中运行
swave(file)

Shane在现场,您确实需要swave。最终

作为一个新手,你最好把任务分开。为此,请执行以下操作:

  • 打开设备:
    pdf(“figures/myfile.pdf”,高度=6,宽度=6)
  • 绘制R对象:
    plot(1:10,type='l',main='boring')
    ——请记住,lattice和ggplot需要在
    plot
    周围显式打印
  • 重要提示:关闭设备:
    dev.off()
    以完成文件
  • 可选:检查pdf文件
  • 在LaTeX中,使用
    usepackage{graphicx}
    在文档头中,使用
    \includegraphics[width=0.98\textwidth]{figures/myfile}
    以包括先前创建的图形,并注意文件扩展名是可选的
  • 通过
    pdflatex
    运行此程序,然后享受

  • 这是一个我找不到的问题

    但是: --来自r的tikz输出 和 tikz代码通过Swave

    使用tikz将使您的外观与文档的其余部分保持一致,并且它将使用latex来排版图形中的所有文本

    编辑

    我建议使用
    tikzDevice
    软件包生成输出,以包含在LaTeX文档中:

    tikzDevice将R中生成的图形转换为LaTeX软件包
    tikz
    可以解释的代码。TikZ为LaTeX提供了一个非常好的矢量绘图系统。TikZ输出的一些好例子位于:

    tikzDevice
    可以像任何其他R图形设备一样使用:

    require( tikzDevice )
    
    tikz( 'myPlot.tex' )
    
    plot( 1, 1, main = '\\LaTex\\ is $\\int e^{xy}$' )
    
    dev.off()
    
    请注意,LaTeX宏中的反斜杠必须加倍,因为R将单个反斜杠解释为转义字符。要在LaTeX文档中使用绘图,只需将其包括在内:

    \include{path/to/myPlot.tex}
    
    pgfSweave
    软件包包含可为您处理上述步骤的
    swave
    功能。确保您的文档在序言中的某个位置包含
    \usepackage{tikz}

    pdf()
    相比,
    tikz()函数的优点是:

    • 图形中标签和标题的字体始终与LaTeX文档中使用的字体匹配。这为文档提供了统一的外观

    • 您拥有LaTeX排版机用于创建数学注释的所有功能,并且可以在图形文本中使用任意LaTeX代码

    tikz()
    函数的缺点是:

    • 它不能很好地缩放以处理包含大量组件的绘图。这些是大型矩阵的绘图。图形元素的剪切数量可能会导致LaTeX缓慢爬行或内存不足

    • 该软件包当前标记为beta版。这意味着,如果作者发现有令人信服的理由这样做,包的接口或功能可能会发生更改


    在结束这篇文章之前,我应该声明我是
    tikzDevice
    pgfSweave
    软件包的作者,所以我的观点可能有偏见。然而,在过去的一年中,我已经使用这两个软件包制作了几份学术报告,并且对结果非常满意。

    我还应该提到,像德克那样将任务分离对于非常大的文档来说是有益的:每次都要从头开始重建整个文档可能会很痛苦,更不用说调试一个大的Swave文档的痛苦了。不过,缓存技巧和软件包是有很多的。但是,值得注意的是,Swave的力量在复杂性和不透明性方面付出了一些代价。委婉地说:)谢谢!你可以用我遇到的一些事情来更新你的答案,这样对其他像我这样的新手来说就更容易了:你已经在文档头中放置了
    \usepackage{graphicx}
    ,以便运行它(在这里找到它:);您在
    上缺少了一个'd',且=0.98
    是否有
    Hmisc
    中的
    latex()
    用于绘图的替代方案?Ie使用“捕获”等环境准备
    \includegraphics
    ,以避免手动编写此代码。在pdf中混合对我不起作用,因为我需要postscipt处理(pdf给了我一个边界框错误)。这对其他人来说可能也是个问题。解决方案很简单——让R创建.ps而不是.pdf:
    postscript(file=myfile.ps,horizontal=FALSE)
    这个问题与这个问题相反:这里的OP是aski