¿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.

Juanjo Conti
fuente
Estoy bastante seguro de que gnuplot también puede hacerlo, pero no soy un maestro, lo siento. :(
Paul Nathan el
relacionado: stackoverflow.com/questions/20981589/…
Ciro Santilli 新疆 改造 中心 996ICU 六四 事件

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)

mrucci
fuente
+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.

DaveParillo
fuente