2016-11-12 50 views
1

我有一些gnuplot代碼,它使用tikz終端製作圖形。但是,我想添加到生成的.tex文件中的一些tikz代碼。Gnuplot 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) 
... 

有沒有辦法來告訴我要上畫一些tikz代碼gnuplot的,所以它輸出.tex文件類似,我做出了一個?閱讀文檔,我發現用這個終端可以設置序言,但不能在其中包含tikz代碼。 我正在考慮的另一個選擇是使用set print output_file然後print我想要的代碼,但是,無論是代碼首先打印在文件中,gnuplot覆蓋它或在gnuplot打印輸出後覆蓋它。

回答

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

不要忘記逃跑的反斜槓。在set label at之後的選項screen告訴gnuplot將標籤相對於屏幕座標系統放置,看看gnuplot命令行中的help coordinates

+0

如果您嘗試在另一個地方繪製圓圈,例如'(5,5)',則會在您的圖形中繪製該圓圈的位置。我試過繪製其他東西,它總是繪製在左下角。我也嘗試過在'http://zx.stackexchange.com/questions/1003/in-tikz-is-it-possible-to-nest-nodes'中提出包含'tikzpicture'環境和矩陣節點但沒有任何工作。由於所有內容都放入節點中,因此可能需要製作腳本來將該代碼添加到.tex文件中。 – Nister

+0

啊,你說得對。它似乎完全忽略了(2,2)或(5,5)。或者(2,2)是相對於該節點的,並且該節點的內容被修剪。但是如何將標籤移動到正確的位置,比如'set set label 1'\\ tikz {\\ draw [green](0,0)circle [radius = 2cm];}「在-5,-0.2'? 'at -5,-0.2'是節點的左下角。我知道,找到正確的座標可能會很困難。也許一個外部腳本(可以用'system'調用)是一個更清潔的解決方案。 – maij