我有一些使用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打印输出后打印它会覆盖它
答案 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];}};
不要忘记逃避反斜杠。 screen
之后的选项set label at
告诉gnuplot将标签相对于屏幕坐标系放置,请查看gnuplot命令行中的help coordinates
。