Este es en realidad un doosie y no puedo hacerlo posible sin magia de shell * nix.
primer lugar, se desea obtener el x etiquetas de tics y etiquetas de tics Y:
XTICS="`awk 'BEGIN{getline}{printf "%s ",$1}' test.dat`"
YTICS="`head -1 test.dat`"
En este punto, XTICS es la cadena "F G H I J" y YTics es la cadena "A B C D E".
Ahora, queremos establecer las xtics por iteración:
set for [i=1:words(XTICS)] xtics (word(XTICS,i) i-1)
set for [i=1:words(YTICS)] ytics (word(YTICS,i) i-1)
Hemos utilizado 2 gnuplot orden interna funciones (word
y words
). words(string)
cuenta cuántas palabras hay en la cadena dada (una palabra es una secuencia de caracteres separada por espacios). word(string,n)
devuelve la n-ésima palabra en la cadena.
Ahora, podemos trazar su archivo de datos ... El único problema es que matrix
quiere usar todas las filas y columnas en su archivo de datos. Es posible que pueda reducir las filas/columnas realmente leídas usando la palabra clave every
, pero no sé cómo hacerlo en los archivos de la matriz, y creo que probablemente sea más fácil seguir confiando en las utilidades del shell (awk
y sed
)
plot "<awk '{$1=\"\"}1' test.dat | sed '1 d'" matrix w image
#######^ replace the first field with nothing
##################################^delete first line
y ahora su parcela (con suerte) tenga el aspecto que desea.
También tenga en cuenta que, dado que hemos utilizado la iteración, esta secuencia de comandos solo funcionará en gnuplot 4.3 o superior - Dado que la estabilidad actual es 4.6, con suerte eso está bien.
Usted, señor, es mi héroe del día. ¡Muchas gracias! – Eekhoorn
@zenbomb - No hay problema. En realidad, fue un juego divertido para mí intentar resolverlo. No trabajo con archivos de datos 'matrix' a menudo, así que era una buena oportunidad para aprender algo nuevo sobre gnuplot. – mgilson
XTICS sin awk: XTICS = "' cut -d '' -f1 test.dat | xargs '"; Abusar de xargs para transformar las columnas a la fila. – Manwe