¿Cómo trazar datos etiquetados con puntos?


7

Me gustaría convertir un archivo como:

Name  X  Y
a     1  2
b     4  1
s     3  3

en un gráfico XY con los puntos XY etiquetados con Nombre.

¿Cómo puedo hacerlo? Creo que esto se puede hacer con gnuplot, pero aún no pude hacerlo.


Estoy bastante seguro de que gnuplot también puede hacerlo, pero no soy un maestro, lo siento. :(
Paul Nathan el

Respuestas:


6

Puede colocar etiquetas en un desplazamiento especificado de los puntos utilizando el siguiente comando gnuplot:

echo "plot 'file.dat' using 2:3 pt 2 notitle, '' using 2:3:1 with labels offset 0.5,0.5 notitle;" | gnuplot -persist

NB: funciona solo si gnuplot se ha compilado con --enable-datastrings (gracias a DaveParillo por la aclaración)


+1 evitación agradable de un archivo de etiqueta separado. Siempre lo hice así y no pensé que hubiera otra manera.
DaveParillo

3
FYI: Si este ejemplo no funciona para alguien - el labelsestilo está disponible sólo si gnuplot se construye con la opción de configuración --enable-datastrings
DaveParillo

Si no está disponible, el error se ve como "¿No hay suficientes columnas para este estilo"? Supongo que no está disponible aquí donde estoy :(
KcFnMi

2

El argumento de GNU no puede hacer esto solo. No sé qué hacer con el texto. Si sus datos existen en un archivo llamado file.dat, entonces:

perl -ane 'print "set label \"($F[0])\" at $F[1],$F[2]\n"' file.dat > label.plt

producirá un archivo de etiqueta que puede usar en gnuplot. Luego puede producir una trama (muy básica) como esta:

gnuplot> load "label.plt"
gnuplot> plot 'file.dat' u 2:3

Puede jugar con el desplazamiento de la etiqueta si lo desea. Por ejemplo,

"set label \"($F[0])\" at $F[1]+0.05,$F[2]+0.05\n"' 

mueve las etiquetas un poco, para que no se encuentren justo en contra de sus puntos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.