Tengo varias medidas para trazar y me gustaría usar algo así como una superficie 3D pgfplots
. Tengo un marco como borde exterior y una cuadrícula como trama de medición. Los valores medidos se toman en el centro de cada celda de la cuadrícula. Al trazar toda la superficie, me gustaría extrapolar los datos hasta los bordes exteriores del marco para llenar todo con la superficie.
Esto es lo que tengo hasta ahora:
\documentclass{standalone}
\usepackage[locale = DE]{siunitx}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\SendSettingsToPgf
\pgfplotsset{%
,grid style={black, thin}
,y label style={rotate=-90}
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
,colorbar
,view={0}{90}
,xmin=0
,xmax=3910
,ymin=0
,ymax=2040
,width=391pt
,height=204pt
,grid=major
,xlabel=Width $b_\mathrm{frame}$ in \si{\milli\metre}
,ylabel=Height $h_\mathrm{frame}$ in \si{\milli\metre}
]
\addplot3[%
,surf
,shader=interp
] file {data.dat};
\end{axis}
\end{tikzpicture}
\end{document}
y data.dat
se parece a:
85 1955 0.97
255 1955 1.86
425 1955 2.44
595 1955 2.23
765 1955 2.17
935 1955 2.35
1105 1955 2.21
1275 1955 2.53
1445 1955 2.58
1615 1955 2.64
1785 1955 2.6
1955 1955 2.03
2125 1955 2.5
2295 1955 2.32
2465 1955 2.22
2635 1955 2
2805 1955 1.59
2975 1955 2.23
3145 1955 2.18
3315 1955 2.07
3485 1955 2.38
3655 1955 2.48
3825 1955 1.42
85 1785 1.3
255 1785 1.41
...
Entonces necesito obtener valores para todos x = 0
y y = 0
puntos. Como pgfplots
es capaz de interpolar, tal vez también sea capaz de extrapolar.
Así es como se ve:
Dos puntos extra:
- Me gustaría colocar la cuadrícula (no las marcas) en el ráster de medición, digamos, cada 170 mm.
- Me gustaría etiquetar el mapa de colores con
speed $v$ in \si{\metre\per\second}
Respuesta1
Respecto a la pregunta principal:
pgfplots
viene sin soporte incorporado para extrapolaciones.
Necesitaría calcularlos mediante un producto externo, tal vez octave
o matlab
.
Respuesta2
(Solución parcial) No conozco esa característica, lo siento. Pero puedo ayudarte con esas dos tareas adicionales. Aquí vamos.
\documentclass{standalone}
\usepackage{filecontents}
\usepackage[locale = DE]{siunitx}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\SendSettingsToPgf
\pgfplotsset{%
,grid style={black, thin}
,y label style={rotate=-90}}
\begin{document}
\begin{filecontents*}{data.dat}
85 1955 0.97
255 1955 1.86
425 1955 2.44
595 1955 2.23
765 1955 2.17
935 1955 2.35
1105 1955 2.21
1275 1955 2.53
1445 1955 2.58
1615 1955 2.64
1785 1955 2.6
1955 1955 2.03
2125 1955 2.5
2295 1955 2.32
2465 1955 2.22
2635 1955 2
2805 1955 1.59
2975 1955 2.23
3145 1955 2.18
3315 1955 2.07
3485 1955 2.38
3655 1955 2.48
3825 1955 1.42
85 1785 1.3
255 1785 1.41
\end{filecontents*}
\begin{tikzpicture}
\begin{axis}[%
,colorbar
,view={0}{90}
,xmin=0
,xmax=3910
,ymin=0
,ymax=2040
,width=391pt
,height=204pt
,grid=major
,xlabel=Width $b_\mathrm{frame}$ in \si{\milli\metre}
,ylabel=Height $h_\mathrm{frame}$ in \si{\milli\metre}
,xtick={0,170,...,3910}
,ytick={0,170,...,2040}
,tick style={black}
,x tick label style={rotate=90}
]
\addplot3[
,surf,
,shader=interp
] file {data.dat};
\end{axis}
\node[xshift=2mm, yshift=4.5mm, rotate=90] at (current bounding box.east){Speed $v$ in \si{\metre\per\second}};
\end{tikzpicture}
\end{document}
Editar:Podemos ampliar nuestro ejemplo usando ticks mayores y menores para conseguir el efecto de que la cuadrícula sea más frecuente que sus etiquetas. Agregué otro gráfico 3D con dos puntos en blanco para controlar el mínimo y el máximo en el eje z, lo que afecta el mapa de colores.
\documentclass{standalone}
\usepackage{filecontents}
\usepackage[locale = DE]{siunitx}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\SendSettingsToPgf
\pgfplotsset{%
,grid style={black, thin}
,y label style={rotate=-90}}
\begin{document}
\begin{filecontents*}{data.dat}
85 1955 0.97
255 1955 1.86
425 1955 2.44
595 1955 2.23
765 1955 2.17
935 1955 2.35
1105 1955 2.21
1275 1955 2.53
1445 1955 2.58
1615 1955 2.64
1785 1955 2.6
1955 1955 2.03
2125 1955 2.5
2295 1955 2.32
2465 1955 2.22
2635 1955 2
2805 1955 1.59
2975 1955 2.23
3145 1955 2.18
3315 1955 2.07
3485 1955 2.38
3655 1955 2.48
3825 1955 1.42
85 1785 1.3
255 1785 1.41
\end{filecontents*}
\begin{tikzpicture}
\begin{axis}[%
,colorbar
,view={0}{90}
,xmin=0
,xmax=3910
,ymin=0
,ymax=2040
,width=391pt
,height=204pt
,grid=minor
,xlabel=Width $b_\mathrm{frame}$ in \si{\milli\metre}
,ylabel=Height $h_\mathrm{frame}$ in \si{\milli\metre}
,minor xtick={0,170,...,5000}
,minor ytick={0,170,...,5000}
,xtick={0,500,...,5000}
,ytick={0,500,...,5000}
,tick style={black}
%,x tick label style={rotate=90}
]
\addplot3[surf, shader=interp] file {data.dat};
\addplot3[surf] coordinates {(0, 0, 0) (0, 0, 3)};
\end{axis}
\node[xshift=2mm, yshift=4.5mm, rotate=90] at (current bounding box.east){Speed $v$ in \si{\metre\per\second}};
\end{tikzpicture}
\end{document}