Pregunta

Me gustaría trazar puntos en una parcela 3D y crear una malla que pueda manejar datos no rectangulares.Para ser más específico, mis datos son

data.dat

-1 0 0
-1 1 0
0 -1 0
0 0 0
0 1 0
1 -1 0
1 0 0

y mi archivo gnuplot

Plot.PLT

set dgrid3d 3,3
splot 'data.dat' w l
pause -1

Desafortunadamente, generalmente dgrid3d parece hacer que mis datos rectangulares y una cuadrícula rectangular (en realidad se trata de una cuadrícula cuadrada).¿Hay alguna manera de trazar un sobre restringido de mis datos?Idealmente, me gustaría trazar el Orthogonal convex Hull de mi conjunto de puntos.

¿Fue útil?

Solución

Tienes algunas opciones para hacer algo como esto, desafortunadamente, todos requieren un poco de trabajo de su parte.

Primero, es importante tener en cuenta que gnuplot puede manejar mallas no rectangulares para trazado de superficie (aunque solo necesita una superficie rectangular para este ejemplo). Para el trazado de la superficie, se ve el archivo de datos (note los registros en blanco):

x11 y11 z11
x21 y21 z21
x31 y31 z31
...

x12 y12 z12
x22 y22 z22
x23 y23 z23
...

luego forman cuadriláteros. En este caso, el primer cuadrilátero se formará a partir de los puntos (x11, y11), (x21, y21), (x12, y12), (x22, y22). El segundo cuadrilátero se formará a partir de (x21, y21), (x31, y31), (x22, y22), (x23, y23) y así sucesivamente. Entonces, dado su conjunto de puntos, puede crear fácilmente una "malla rectangular" que mantendrá todos sus puntos de datos. No estará espaciado uniformemente, pero eso no es un problema ya que todos. Ahora debemos averiguar cómo eliminar los puntos para que Gnuplot no los traze. Este es el "truco". Puede marcar una cadena en particular como "datos faltantes" en el archivo de datos (set datafile missing "string"). En ese caso, GNUPLOT no trazará ese punto, pero aún así mantendrá un seguimiento de las coordenadas de los datos que faltan por el bien de generar la superficie.

Así que al final del día, su archivo de datos se verá como:

x11 y11 ?
x21 y21 ?
x31 y31 z31
...

x12 y12 ?
x22 y22 z22
x23 y23 z23
...

y el script para trazarlo sería:

set datafile missing '?'
set surf
set view map #Not sure about this...depends on the view you want
splot "mydata.dat" u 1:2:3 w lines

Si quieres que Gnuplot calcule el "Hull convexo ortogonal", creo que estás fuera de la suerte allí.

la manera fácil

También tenga en cuenta que si desea un objeto de color sólido en el espacio 2D (como la imagen en el enlace Wikipedia que ha publicado), este problema se vuelve significativamente más fácil. Si puede crear un archivo de datos con solo los vértices del objeto que desea dibujar (en orden, de modo que (x1, y1) se conecta a (x2, y2) se conecta a (x3, y3) ...), entonces puede trazar ese archivo de datos como:

set fillstyle #However you want the object to appear
plot "datafile.dat" u 1:2 with filledcurves closed

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top