Wie zeichne ich eine Figur mit einem bestimmten Abstand zwischen den einzelnen Linien?

8

Eigentlich versuche ich eine Figur zu zeichnen, aber es stellt und zeigt alle Spalten (Linien) aufeinander, so dass es nicht repräsentativ ist. Ich versuche, simulierte Daten zu machen und zeige dir, wie ich es darstelle, und zeige dir auch, was ich will

Ich weiß nicht, wie man ein Datenbeispiel wie ich unten zeige, aber hier was ich mache

%Vor%

Nachdem ich den Datenrahmen erstellt habe, werde ich alle Spalten gegen die erste plotten, indem ich sie schmelze und ggplot verwende

%Vor%

Ich möchte einen bestimmten Abstand zwischen jeder Zeile (in diesem Fall haben wir 6) etwas wie unten haben. in einer Dimension ist es V1, in einer anderen Dimension ist es die Anzahl der Spalten. Ich interessiere mich nicht für die Funktion, ich möchte nur das Foto

    
nik 06.04.2016, 10:52
quelle

3 Antworten

8

Diese Lösung verwendet rgl und erstellt dieses Diagramm:

Es verwendet diese Funktion, die 3 Argumente akzeptiert:

  • df : a data.frame genau wie Ihr 'M' oben
  • x : a numeric vector (or a 1-col data.frame ') für die x-Achse
  • cols : (optionnal) ein Vektor von Farben zu wiederholen. Wenn sie fehlen, wird eine schwarze Linie gezeichnet (
  • )

Hier ist die Funktion:

%Vor%

Beachten Sie, dass Sie require(rgl) aus der Funktion und library(rgl) irgendwo in Ihrem Skript entfernen können, zB am Anfang.

Wenn Sie rgl nicht installiert haben, dann install.packages("rgl") .

Schwarze Linien, die Vorgabe, können einen Moiré -Effekt erzeugen, aber eine sich wiederholende Farbpalette ist schlechter. Dies kann vom Gehirn abhängig sein. Eine einzelne Farbe würde auch vermeiden, eine künstliche Dimension (und eine starke) einzuführen.

Ein Beispiel unten:

%Vor%

Das 3D-Fenster kann mit der Maus navigiert werden.

Brauchst du noch etwas anderes?

BEARBEITEN

Sie können Ihr zweites Diagramm mit der folgenden Funktion erstellen. Die Reichweite Ihrer Daten ist so groß, und ich denke, die ganze Idee dahinter, jede Zeile nach oben zu verschieben, verhindert eine y-Achse mit einer zuverlässigen Skalierung. Hier habe ich alle Signale normalisiert (0 & lt; = Signal & lt; = 1). Auch der Parameter gap kann verwendet werden, um damit zu spielen. Wir könnten die beiden Verhaltensweisen trennen, aber ich denke, es ist nett. Probieren Sie andere Werte von gap aus und sehen Sie sich die folgenden Beispiele an.

  • df : a data.frame genau wie Ihr 'M' oben
  • x : a numeric vector (or a 1-col data.frame ') für die x-Achse
  • cols : (optionnal) ein Vektor von Farben zu wiederholen. Wenn sie fehlen, wird eine schwarze Linie gezeichnet (
  • )
  • gap : Lückenfaktor zwischen einzelnen Zeilen
  • more_gap_each : alle n Zeilen wird eine größere Lücke erzeugt ...
  • more_gap_relative : ... und wird gap x more_gap_relative wide
  • sein

Hier ist die Funktion:

%Vor%

Wir können es mit (Standard) verwenden:

%Vor%

Und Sie erhalten diese Handlung:

oder:

%Vor%

oder mit Farben:

%Vor%

oder, immer noch mit Farben und doch mit größeren Lücken:

%Vor%

    
Vincent Bonhomme 08.04.2016, 17:56
quelle
5

Wie bereits erwähnt, haben Ihre Daten sehr große Peaks und es ist nicht klar, ob Sie die Überschneidung einiger Kurven zulassen möchten,

%Vor%

Alternativ könnte ein Ausreißer / Spitzendetektionsschema verwendet werden, um sie herauszufiltern, bevor die Verschiebung zwischen den Kurven berechnet wird,

%Vor%

(es gibt wahrscheinlich gute Algorithmen, um zu entscheiden, welche Punkte entfernt werden sollen, aber ich kenne sie nicht)

    
baptiste 08.04.2016 23:12
quelle
0

Für das 3D-Plotten bevorzuge ich das rgl-Paket. Dies sollte in der Nähe Ihrer gewünschten Lösung sein.
Die Farbe jedes Scans ändert sich bei jedem dritten.

%Vor%

Mache die großen Unterschiede in der Größe der Datenpunkte, ich musste einige Faktoren skalieren, um einen lesbaren Graphen zu erstellen. Die Intensität geht von 0 bis fast 1.000.000 und verzerrt somit den Graphen. Es wurde versucht, die Norm zu normalisieren, indem man das ln nahm, aber die Handlung wurde unlesbar.

    
Dave2e 08.04.2016 17:57
quelle

Tags und Links