Heatmap-Diagrammgenerator für Tabellen-/Matrixdaten

Ich habe einige numerische Daten in Matrixform, die der Diskussion halber die Werte einer Funktion f(x,y) sind, die in einem diskreten Gitter abgetastet wurden. Diese Daten befinden sich beispielsweise in einer .csv-Datei oder in einer .ods (LibreOffice Calc) / .xlsx (Excel)-Tabelle; Natürlich kann ich bei Bedarf Formate ändern.

Ich möchte eine Heatmap für diese Daten erstellen : Ein rechteckiges Bild, das an jeder (x,y)-Position eine Farbe aufweist, deren Intensität proportional zu einer vernünftigen Interpolation von f(x,y) unter Verwendung der Beispieldaten ist.

Nun, die Wikipedia-Seite enthält eine Reihe von Links zu Software, die die eine oder andere Art von Heatmaps erstellt, aber ich interessiere mich für einen Vergleich zwischen ihnen in Bezug auf:

  • Intuitive Bedienung
  • Einfache Eingabeaufnahme
  • Geschwindigkeit
  • Unterstützung für Karten mit unendlicher Auflösung
  • Möglichkeit, Ausgabedateien in verschiedenen Formaten zu erstellen
  • Konfigurierbarkeit und Anpassbarkeit (Farbpaletten, Wertebereiche, Transformieren von Werten mit einer bestimmten Funktion, Generieren nur der Werte an den Rasterpunkten oder Generieren als Overlays, Beschriftungen usw.))

Gibt es auch Formate, die das Generieren von SVGs unterstützen, die Heatmaps irgendwie von sich aus unterstützen, dh die Farbgebung von Farbverläufen mit zwei Variablen verwenden?

(Ich hoffe insgeheim auf ein LibreOffice-Plugin, aber ich schätze, es gibt keins.)

Anforderungen:

  • Libre, Gratis und Open-Source, es sei denn, es handelt sich um ein Excel-Add-on
  • Linux, vorzugsweise auch Windows

Bearbeiten: Obwohl ich eine Antwort akzeptiert habe, sind andere Optionen immer noch sehr willkommen, insbesondere solche mit einer GUI.

Würden Sie eine HTML- oder PDF-Lösung akzeptieren? Grafik, Histogramm oder geografisches Overlay? Je mehr Informationen Sie uns geben können, desto besser können wir Ihnen antworten.
@Mawg: (1) Ja. (2) Als Option, sicher, aber nicht, wenn ich es nicht vermeiden kann. Bitte nur die Heatmap.

Antworten (4)

Hier ist ein einfacher Weg.

Es gibt ein kostenloses Open-Source-Dienstprogramm xyzzum schnellen und bequemen Visualisieren dreidimensionaler numerischer Daten aus jeder CSV-Datei.

Es führt eine automatische Interpolation für die X- und Y-Dimensionen durch, sodass es auch für Teildaten (nicht Vollraster) funktioniert. Es ermöglicht Ihnen, jede Spalte nach Namen oder Index aus größeren Datensätzen zu extrahieren, und verfügt über viele andere Optionen und Parameter, die Sie über die Befehlszeile festlegen können. B. Titel, Achsenbeschriftung, Farbschema ändern, ob Konturlinien hinzugefügt werden sollen und mehr.

Hier ist eine Beispielausgabe, die aus dem R-Projekt- volcano.csvDatensatz generiert wurde:

vulkan.png wird automatisch aus dem R <code>volcano.csv</code>-Datensatz generiert

Hier ist ein weiteres Beispiel, das die Befehlszeilensteuerung über die Heatmap zeigt:

# 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

Loggequetschtes Vulkanbild

xyzeingeschrieben python, mit pandas+ matplotlib.

xyzist FOSS. Die Quelle kann von meinem Skript-Repository auf Github heruntergeladen werden: https://github.com/arielf/scripts .

Hier ist ein direkter Link zum rohen xyz-Skript

Das Skript liefert eine Verwendungsmeldung, wenn es ohne oder mit fehlerhaften Parametern aufgerufen wird.

(Vollständige Offenlegung: Ich bin der Autor von xyz.)

Vielen Dank, dass Sie dieses Tool geschrieben haben. Sie haben erwähnt, dass es einfacher ist als Gnuplot. Können Sie erklären, in welchem ​​Sinne?
Es automatisiert den größten Teil der Arbeit, alles hat eine Voreinstellung, inkl. Interpolation, sodass Sie zum Generieren eines Bildes lediglich eine Datendatei und die Spalten bereitstellen müssen, die Sie extrahieren/plotten möchten. zB xyz datafile.csv 0 1 2. Es gibt Ihnen zusätzliche Kontrolle über Befehlszeilenparameter, so dass es natürlicher ist (und ich bin mit gnuplot ziemlich vertraut), es direkt von der Befehlszeile aus zu verwenden, ohne eine neue (auch kleine) Sprache/syntaktische Konvention lernen zu müssen. Vergleichen Sie die Länge und Komplexität eines Skripts wie gnuplot.sourceforge.net/demo_5.0/heatmaps.7.gnu mit einer typischen Verwendung von xyz direkt auf den Daten.

Gnuplot sollte Ihren Bedürfnissen entsprechen. Es ist ein tragbares, befehlszeilengesteuertes Grafikdienstprogramm für Linux, OS/2, MS Windows, OSX, VMS und viele andere Plattformen. Es ist relativ einfach zu bedienen und Sie finden viele Tutorials im Internet. Unterstützt viele Ausgabeformate wie pdf, png, gif, jpeg, LaTeX, metafont, emf, svg und HTML5. Gemäß den auf der Projektwebsite verfügbaren Demonstrationen ist es in der Lage, 2D- und 3D-Heatmaps zu erstellen.

Eine Möglichkeit ist die Verwendung von Python-Makroskripten in LibreOffice:

  • LibreOffice 5 enthält eine Python 3.3.5-Installation
  • Python verfügt über eine Reihe von Grafikkomponenten, die anscheinend installiert werden können
  • Python und die meisten Bibliotheken sind kostenlos, kostenlos, Open Source und plattformübergreifend.
... aber sagen Sie mir nicht im Wesentlichen, dass ich dies selbst auf der Grundlage von Allzweckbibliotheken implementieren soll? :-)
@einpoklum - Ich sage Ihnen, dass Sie genau das haben können, was Sie möchten, wenn Sie einige Bausteine ​​​​zusammenstellen.
Wenn Sie einen Online-Dienst ausprobieren möchten, gibt es plot.ly/alpha/workspace , der Heatmaps aus Excel oder Excel-ähnliche Daten erstellt.

@arielf hat ein Standardbeispiel aus R verwendet, aber er erwähnt keine direkte Lösung mit der Plotly- Bibliothek. Darüber hinaus eignet sich R auch zum Importieren von Datensätzen (z. B. read.csv, die Sie auch auf Locale-CSV anwenden können).

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

Intuitiv zu bedienen: R ist nicht die einfachste Sprache

Einfache Eingabeaufnahme: Die R-Community ist riesig

Geschwindigkeit: R ist schnell

Unterstützung für Karten mit unendlicher Auflösung: nicht sicher, was das bedeutet

Möglichkeit, Ausgabedateien in verschiedenen Formaten zu erstellen: Mit RStudio können Sie PDF und HTML erstellen, der Export in Bilder ist ebenfalls möglich (jpg, png, svg)

Konfigurierbarkeit und Anpassbarkeit: wahrscheinlich das gleiche wie bei anderer Software

RStudio ist kostenlos für Windows und Linux.

Können Sie die Handlung bezüglich der Kriterien, die ich in meiner Frage erwähnt habe, etwas näher erläutern?
Nun, es hat meinen Tag gerettet. Ich habe eine Tabelle mit vielen Blättern und muss eine Heatmap erstellen, indem ich Spalten aus verschiedenen Blättern kombiniere. Daher ist eine Vorverarbeitung der Daten unvermeidlich, und ich trenne die Daten zunächst in eine Reihe von CSV-Dateien und kombiniere sie dann mit R. Wenn Sie bereits in R sind, sind das Erstellen einer Heatmap mit der Plotly-Bibliothek nur ein oder zwei zusätzliche Zeilen.