Gnuplot tikz终端,如何向图片添加命令?

时间:2016-11-12 17:58:41

标签: plot latex gnuplot tikz

我有一些使用tikz终端制作图表的gnuplot代码。但是,我想在生成的.tex文件中添加一些tikz代码。

作为MWE,请考虑以下gnuplot代码:

set term tikz standalone
set output "out.tex"
plot sin(x)

让我们说我想在生成的图上画一个圆圈,我可以用\draw (2,2) circle [radius = 2cm]做。将此行添加到生成的.tex文件中会生成以下代码:

\documentclass[10pt]{article}
\usepackage[T1]{fontenc}
\usepackage{textcomp}

\usepackage[utf8x]{inputenc}

\usepackage{gnuplot-lua-tikz}
\pagestyle{empty}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{\gpbboxborder}
\begin{document}

\begin{tikzpicture}[gnuplot]


%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%!! ADDED BY HAND
\draw (2,2) circle [radius = 2cm];
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


%% generated with GNUPLOT 5.0p3 (Lua 5.1; terminal rev. 99, script rev. 100)
...

有没有办法告诉gnuplot我想在图片上有一些tikz代码,所以它会输出一个.tex文件,类似于我制作的文件?阅读文档我发现,通过此终端,您可以设置序言,但不能在那里包含tikz代码。 我正在考虑的另一个选项是使用set print output_file然后print我想要的代码,但是,该代码首先打印在文件中并且gnuplot覆盖它或者在gnuplot打印输出后打印它会覆盖它

1 个答案:

答案 0 :(得分:1)

也许这很接近:

set label 1 "\\tikz{\\draw [green] (2,2) circle [radius = 2cm];}" at screen 0.0, screen 0.0

set label 2 "by gnuplot" textcolor rgb "#00FF00" at 0, -0.6
set label 3 "manual" textcolor rgb "#0000FF" at 0, -0.5

set term tikz standalone
set output "out.tex"
plot sin(x)

与手工绘制命令生成的圆相比,有一个小偏移,但它可能足够接近。

请注意,此方法不直接在生成的tex文件中放置draw命令,而是将draw命令放入node。我认为这会导致偏移。 Gnuplot产生了这个:

\node[gp node left] at (0.000,0.000) {\tikz{\draw [green] (2,2) circle [radius = 2cm];}};

enter image description here

不要忘记逃避反斜杠。 screen之后的选项set label at告诉gnuplot将标签相对于屏幕坐标系放置,请查看gnuplot命令行中的help coordinates