Generador de gráficos de mapas de calor para datos de tablas/matrices

Tengo algunos datos numéricos en forma de matriz, que por el bien de la discusión son los valores de alguna función f(x,y) muestreada en alguna cuadrícula discreta. Estos datos están, por ejemplo, en un archivo .csv o en una tabla .ods (LibreOffice Calc) / .xlsx (Excel); por supuesto que puedo cambiar los formatos si es necesario.

Quiero generar un mapa de calor para estos datos: una imagen rectangular que, en cada posición (x, y), tiene un color cuya intensidad es proporcional a alguna interpolación razonable de f (x, y) usando los datos de muestra.

Ahora, la página de Wikipedia tiene un montón de enlaces a software que produce un tipo u otro de mapas de calor, pero estoy interesado en una comparación entre ellos, con respecto a:

  • Intuitividad de uso
  • Facilidad de ingestión de entrada
  • Velocidad
  • Soporte para mapas de resolución infinita
  • Capacidad para producir archivos de salida en varios formatos.
  • Configurabilidad y capacidad de ajuste (paletas de colores, rangos de valores, transformación de valores con una función específica, generar solo los valores en los puntos de la cuadrícula o generarlos como superposiciones, etiquetas, etc.))

Además, ¿existen formatos que admitan la generación de svg que de alguna manera admitan mapas de calor intrínsecamente, es decir, que utilicen coloración de área de degradado de dos variables?

(Espero en secreto un complemento de LibreOffice, pero supongo que no hay uno).

Requisitos:

  • Libre, gratis y de código abierto, a menos que sea algún complemento de Excel
  • Linux, preferiblemente también Windows

Editar: si bien he aceptado una respuesta, otras opciones siguen siendo muy bienvenidas, especialmente las que tienen una GUI.

¿Aceptaría una solución HTML o PDF? ¿Gráfico, histograma o superposición geográfica? Cuanta más información nos puedas dar, mejor respuesta podremos darte.
@Mawg: (1) Sí. (2) Como opción, claro, pero no si no puedo evitarlo. Solo el mapa de calor por favor.

Respuestas (4)

Aquí hay una manera más fácil.

Existe una utilidad gratuita y de código abierto xyzpara visualizar rápida y cómodamente datos numéricos tridimensionales de cualquier archivo CSV.

Realiza una interpolación automática en las dimensiones X, Y, por lo que funciona incluso en datos parciales (no de cuadrícula completa). Le permite extraer cualquier columna por nombre o índice de conjuntos de datos más grandes y tiene muchas otras opciones y parámetros que puede configurar desde la línea de comandos. por ejemplo, cambie el título, las etiquetas de los ejes, el esquema de color, si desea agregar líneas de contorno y más.

Aquí hay un resultado de ejemplo generado a partir del volcano.csvconjunto de datos de R-project:

volcano.png generado automáticamente a partir del conjunto de datos R <code>volcano.csv</code>

Aquí hay otro ejemplo, que muestra el control de la línea de comandos sobre el mapa de calor:

# Use same data-file, with explicit column indexes, no contour-lines
# different color-scheme, use log-scale on the X-axis, and customized
# resolutions on two of the axes
xyz volcano.csv 0 1 2 cl=0 xscale=log \
    xlab='X (log scale)' ylab=Y title='log-squished seismic volcano' \
    cmap=seismic zres=40 xres=50

imagen de volcán aplastado por troncos

xyzescrito en python, usando pandas+ matplotlib.

xyzes FOSS. La fuente se puede descargar desde mi repositorio de scripts en github: https://github.com/arielf/scripts .

Aquí hay un enlace directo al script xyz sin procesar

El script proporciona un mensaje de uso cuando se llama sin parámetros o con parámetros erróneos.

(Divulgación completa: soy el autor de xyz.)

Gracias por escribir esta herramienta. Mencionaste que es más fácil que gnuplot. ¿Puedes explicar en qué sentido?
Automatiza la mayor parte del trabajo, todo tiene un valor predeterminado, incl. interpolación, por lo que todo lo que necesita para generar una imagen es simplemente proporcionar un archivo de datos y las columnas que desea extraer/trazar. ej xyz datafile.csv 0 1 2. Le brinda control adicional a través de los parámetros de la línea de comandos, por lo que es más natural (y estoy bastante familiarizado con gnuplot) para usar directamente desde la línea de comandos, sin tener que aprender un nuevo lenguaje/convenciones sintácticas (incluso pequeñas). Compare la longitud y la complejidad de un script como gnuplot.sourceforge.net/demo_5.0/heatmaps.7.gnu con un uso típico de xyz directamente en los datos.

Gnuplot debe ajustarse a sus necesidades. Es una utilidad gráfica portátil impulsada por línea de comandos para Linux, OS/2, MS Windows, OSX, VMS y muchas otras plataformas. Es relativamente fácil de usar y encontrará muchos tutoriales en Internet. Admite muchos formatos de salida como pdf, png, gif, jpeg, LaTeX, metafont, emf, svg y HTML5. Según las demostraciones disponibles en el sitio web del proyecto, es capaz de producir mapas de calor 2D y 3D.

Una posibilidad es usar secuencias de comandos de macros de python dentro de LibreOffice:

  • LibreOffice 5 viene con una instalación de python 3.3.5 dentro
  • python tiene una serie de componentes gráficos disponibles que parece que se pueden instalar
  • Python y la mayoría de las bibliotecas son gratuitas, gratuitas y de código abierto y multiplataforma.
... pero, ¿no me estás diciendo esencialmente que implemente esto yo mismo en función de las bibliotecas de uso general? :-)
@einpoklum: te estoy diciendo que puedes tener exactamente lo que te gustaría si juntas algunos elementos básicos.
Si desea probar un servicio en línea, hay plot.ly/alpha/workspace hace mapas de calor de Excel o Excel como datos.

@arielf usó un ejemplo estándar de R pero no menciona una solución directa usando la biblioteca plotly . Además, R también es potente para importar conjuntos de datos (p. ej., read.csv, que también puede aplicar a locale csv).

https://plotly.com/r/heatmaps/

Intuitividad de uso: R no es el lenguaje más fácil

Facilidad de ingesta de entrada: la comunidad R es enorme

Velocidad: R es rápido

Compatibilidad con mapas de resolución infinita: no estoy seguro de lo que esto significa

Capacidad para producir archivos de salida en varios formatos: con RStudio puede crear pdf y html, también es posible exportar a imagen (jpg, png, svg)

Configurabilidad y capacidad de ajuste: probablemente lo mismo que otro software

RStudio es gratuito para Windows y Linux.

¿Puede ampliar un poco más la trama con los criterios que mencioné en mi pregunta?
Bueno, me salvó el día. Tengo una hoja de cálculo con muchas hojas y tengo que crear un mapa de calor combinando columnas de diferentes hojas. Por lo tanto, el procesamiento previo de los datos es inevitable y primero separo los datos en un conjunto de archivos csv y luego uso R para combinarlos. Cuando ya está en R, crear un mapa de calor usando la biblioteca plotly son solo una o dos líneas adicionales.