TikZ 覆盖 gnuplot .gnuplot 文件

TikZ 覆盖 gnuplot .gnuplot 文件

我不知道我提出的是一个功能还是一个错误。

我正在尝试获取cos x由 生成gnuplot并绘制的以度为单位的三角图TikZ。我的.gnuplot文件如下所示:

set table "trig.cosinex.table"; set format "%.5f"
set angles degrees; set samples 500; plot [x=0:360] cos(x)

当我.tex使用 Tikz/lualatex 编译我的文件时,.gnuplot文件变成

set table "trig.cosinex.table"; set format "%.5f"
set samples 500; plot [x=0:360] cos(x)

set angles degrees;部分已被删除。

我的文件中与 gnuplot 相关的行.tex是:

\draw [domain=0:360, samples=500, smooth] plot[id=cosinex] function {cos(x)}; % anm I missing a prefix here?

请注意:

a. 我通过运行文件手动生成.table文件.gnuplotgnuplot.

.tableb. TikZ/lualatex即使不存在也不会生成文件(与手动相反?)而只会覆盖.gnuplot文件。

我的问题是:

  1. 我怎样才能在它覆盖的文件TikZ中指定角度为度数.gnuplot?[如果无法防止覆盖。]
  2. 如何防止首先TikZ覆盖我的文件?[使用 进行手动编译后,在指定的多次编译中保持不变,但文件如上所述被更改。因此,重复手动编译会产生错误的文件并且不会给出正确的结果。].gnuplotgnuplot.tableTikZ.gnuplot.table

谢谢。

答案1

当您使用 时\draw ... plot ... function {<plot command>},TikZ 所做的第一件事是.gnuplot使用默认选项和 生成文件<plot command>。然后它尝试gnuplot使用该.gnuplot文件执行。这是一个功能(它应该这样function做),并且按照手册中的描述工作。

如果您只想绘制.plot通过gnuplot手动调用生成的文件,那么您不应该使用命令function,而应该简单地file使用。对于您的情况,您可以使用

\draw [smooth] plot file {texse.cosinex.table};

请注意,绘制文件数据时domainsamplesid键不起作用。


如果您想要使用具有度的function命令(即,您想要从 TikZ 内部生成文件),则可以使用提供适当的选项:.gnuplotraw gnuplot

\draw [smooth] plot[id=cosinex, raw gnuplot] function {set samples 500; set angles degrees; plot [0:360] cos(x)};

或者你可以.gnuplot使用以下方法更改骨架

\makeatletter
{
  \catcode`\%=12
  \catcode`\"=12
  \xdef\pgf@gnuplot@head{set table \noexpand\pgf@plottablefile@quoted; set angles degrees; set format "%.5f"}
}
\makeatother

在你的序言中。然后你可以根据需要绘制你的函数:

\draw [domain=0:360, samples=500, smooth] plot[id=cosinex] function {cos(x)};

相关内容