Re: Gnuplot e tikz

#20774
Up
0
Down
::


Aggiungo un mio esempio:

Le curve, gli assi e le etichette degli assi sono ottenuti con il seguente script Gnuplot:
`
set terminal lua solid nopicenvironment originreset plotsize 11cm,6.5cm
set output 'Mach_Cl.tex'
set datafile separator “,”
set format x “%3.1f”
set format y “%3.1f”
set key at graph 0.78, graph 0.17
set ytics offset 1,0
set xtics offset 0,0.5
set border lw 2
set xrange [ 0 : 2 ] noreverse nowriteback
set xlabel '\relsize{1}$\text{\sf M}_{\infty}$' \
offset graph 0.445, graph 0.07
set yrange [ 0.0 : 3 ] noreverse nowriteback
set ylabel \
'\tikz[baseline]{\node at (0,0) rotate=-90]{\relsize{0}$\displaystyle \frac{C_{\ell}}{\,\,C_{\ell}\big|_{\text{\sf M}_{\infty}=0}\,}$};}' \
offset graph -0.010, graph 0.42

# this sets tikz nodes for later reference
set label “” at 0,0 font “,gp refnode,name=nM00a”
set label “” at 0,0.5 font “,gp refnode,name=nM00b”
set label “” at 0,0.7 font “,gp refnode,name=nM00c”
set label “” at 1,0 font “,gp refnode,name=nM10a”
set label “” at 1,0.5 font “,gp refnode,name=nM10b”
set label “” at 1,0.7 font “,gp refnode,name=nM10c”
set label “” at 1,3.0 font “,gp refnode,name=nM10d”
set label “” at 0.8,0 font “,gp refnode,name=nM08a”
set label “” at 0.8,0.5 font “,gp refnode,name=nM08b”
set label “” at 0.8,0.7 font “,gp refnode,name=nM08c”
set label “” at 1.2,0 font “,gp refnode,name=nM12a”
set label “” at 1.2,0.5 font “,gp refnode,name=nM12b”
set label “” at 1.2,0.25 font “,gp refnode,name=nM12bm”
set label “” at 1.2,0.7 font “,gp refnode,name=nM12c”
set label “” at 1.9,0 font “,gp refnode,name=nM20a”
set label “” at 1.9,0.5 font “,gp refnode,name=nM20b”
set label “” at 1.9,0.25 font “,gp refnode,name=nM20bm”
set label “” at 1.9,0.7 font “,gp refnode,name=nM20c”

set label “” at 0.83,1.7 font “,gp refnode,name=nP1”
set label “” at 1.3,0.9 font “,gp refnode,name=nP2”

ClSub(x)=1/sqrt(1.-x**2)
ClSup(x)=1/sqrt(x**2 – 1.) – 0.2

set yzeroaxis
set samples 150, 150
plot \
ClSub(x) with lines lw 3 lt 2, \
ClSup(x) with lines lw 3 lt 2, \
'Mach_Cl_c.csv' using 1:2:(30000.) smooth acsplines with lines lw 3 lt 1
`

Il file di dati letto da questo script è qui:
http://wpage.unina.it/agodemar/temp/Mach_Cl_c.csv.

Successivamente, il file Mach_Cl.tex, creato da Gnuplot, è stato richiamato dal seguente sorgente LaTeX:

`
\documentclass[10pt]{article}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage[latin1]{inputenc}
\usepackage{gnuplot-lua-tikz}
\usepackage{relsize}

% #1 plot number — multiplots are numbered from 1 to n, a single plot is allways number 1)
% #2 point name — name the point to reference it later
% #3 rel. x pos — relative x position between 0 and 1
% #4 rel. y pos — relative y position between 0 and 1
\newdimen\gptmpdimx
\newdimen\gptmpdimy
\newcommand{\gpsetplotcoord}[4]{%
\pgfextractx{\gptmpdimx}{%
\pgfpointlineattime{#3}%
{\pgfpointanchor{gpbb south west #1}{center}}%
{\pgfpointanchor{gpbb south east #1}{center}}}%
\pgfextracty{\gptmpdimy}{%
\pgfpointlineattime{#4}%
{\pgfpointanchor{gpbb south west #1}{center}}%
{\pgfpointanchor{gpbb north west #1}{center}}}%
\coordinate (#2) at (\gptmpdimx,\gptmpdimy);%
}
%%
%% e.g. \gplegendline{gp_lt_color1}{gp_lt_plot1}
%%
\newcommand{\gplegendline}[2]{%
\tikz[gnuplot,baseline,yshift=.6ex]{\draw[#1,#2](0,0)–(.6,0);}%
}
%%
%% e.g. \gplegendmark{gp_lt_color0}{gp_mark1}
%%
\newcommand{\gplegendmark}[2]{%
\tikz[gnuplot,baseline,yshift=.6ex]{\color{#1}\gppoint{#2}{(0,0)}}%
}
%%
%% e.g. “time / t \quad\gplabelarrow”
%%
\newcommand{\gplabelarrow}{%
\tikz[baseline]{\draw[yshift=.7ex,->](0,0)–(.7,0);}%
}

\definecolor{mydarkgreen}{rgb}{0.03,0.47,0.03}
\definecolor{mydarkblue}{rgb}{0.07,0.08,0.4}

\begin{document}

\begin{tikzpicture}[gnuplot]

\renewcommand{\gpsolidlines}{} % “disable” \gpsolidlines
\gpdashedlines

% change the color of default gnuplot line types
\colorlet{gp_lt_color0}{mydarkblue}%
\colorlet{gp_lt_color1}{mydarkgreen}%
%%
%% change font size
%%
%\tikzstyle{every node}=+[font=\relsize{1}]

%%
%% customize line types
%%
%\tikzstyle{gp_lt_plot0} = [loosely dotted]%
%\tikzstyle{gp_lt_plot1} = [loosely dashed]%
%\tikzstyle{gp_lt_plot1} = [dashed]%

%% include plot file

\input{Mach_Cl.tex}

%%
%% draw legend
%%

\node[draw=none,right=0pt,anchor=south west,xshift=8cm,yshift=5.0cm,rounded corners=0.5ex,fill=white] at (gpbb south west 1) {%
\tikz{%
\node[anchor=east,inner sep=0pt,yshift=0\baselineskip]%
{\relsize{1}teorico\ \gplegendline{gp_lt_color1}{gp_lt_plot1, very thick}};
\node[anchor=east,inner sep=0pt,yshift=-1.3\baselineskip]%
{\relsize{1}sperimentale\ \gplegendline{gp_lt_color0}{gp_lt_plot0, very thick}};
}
};

%%
%% draw the rest
%%

\draw[draw=none,pattern=dots,pattern color=mylightblue,fill opacity=0.8] (nM08a) — (nM12a) — (nM12c) — (nM08c) — cycle;
\draw[draw=none,pattern=dots,pattern color=mydarkgreen!50,fill opacity=0.8] (nM00a) — (nM08a) — (nM08c) — (nM00c) — cycle;
\draw[draw=none,pattern=dots,pattern color=orange!70,fill opacity=0.8] (nM12a) — (nM20a) — (nM20bm) — (nM12bm) — cycle;
\draw[dashed,mydarkblue] (nM10a) — (nM10d);
\draw[solid,very thick,mydarkblue,arrows=<->] (nM00b) — node [pos=0.5,fill=white,inner sep=0.4ex]{subsonico} (nM08b);
\draw[solid,very thick,mydarkblue,arrows=<->] (nM08b) — node [pos=0.5,fill=white,inner sep=0.4ex]{transonico} (nM12b);
\draw[solid,very thick,mydarkblue,arrows=<->] (nM12bm) — node [pos=0.5,fill=white,inner sep=0.4ex]{supersonico} (nM20bm);
\draw[dashed,mydarkblue] (nM08a) — (nM08c);
\draw[dashed,mydarkblue] (nM12a) — (nM12c);

\node at (nP1) [node distance=0pt,%xshift=20pt,yshift=-5pt,%
pin={[pin distance=1.0cm,pin edge={bend left,mydarkgreen!70,thick}]120:{%
$\displaystyle\propto\frac{1}{\sqrt{1-\text{\sf M}_{\infty}}}$}%
}%
]{};

\node at (nP2) [node distance=0pt,%xshift=20pt,yshift=-5pt,%
pin={[pin distance=1.2cm,pin edge={bend left,mydarkgreen!70,thick}]40:{%
$\displaystyle\propto\frac{1}{\sqrt{\text{\sf M}_{\infty}-1}}$}%
}%
]{};
\end{tikzpicture}
\end{document}
`

Buon disegno,
Agostino

Go to top