![TikZ 覆盖 gnuplot .gnuplot 文件](https://linux22.com/image/249072/TikZ%20%E8%A6%86%E7%9B%96%20gnuplot%20.gnuplot%20%E6%96%87%E4%BB%B6.png)
我不知道我提出的是一个功能还是一个错误。
我正在尝试获取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
文件.gnuplot
gnuplot.
.table
b. TikZ/lualatex即使不存在也不会生成文件(与手动相反?)而只会覆盖.gnuplot
文件。
我的问题是:
- 我怎样才能在它覆盖的文件
TikZ
中指定角度为度数.gnuplot
?[如果无法防止覆盖。] - 如何防止首先
TikZ
覆盖我的文件?[使用 进行手动编译后,在指定的多次编译中保持不变,但文件如上所述被更改。因此,重复手动编译会产生错误的文件并且不会给出正确的结果。].gnuplot
gnuplot
.table
TikZ
.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};
请注意,绘制文件数据时domain
,samples
和id
键不起作用。
如果您想要使用具有度的function
命令(即,您想要从 TikZ 内部生成文件),则可以使用提供适当的选项:.gnuplot
raw 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)};