Wie erstelle ich ein contour plot?
Wie erstelle ich ein contour plot?
Hallo,
ich habe bisher kaum mit R (Studio) gearbeitet. Nun muss ich aus einer Tabelle ein Contour plot erstellen. Ich habe schon einige Funktionen ausprobiert, jedoch kommt nie das raus, was ich haben möchte.
Bei meinen Daten handelt es sich um eine Tabelle mit 10 Spalten und etlichen Zeilen (13.200). Die ersten 3 Spalten brauche ich (X-Wert in Metern, Y-Wert in Metern, Temperatur in Kelvin).
Das Problem ist jetzt, dass in den ersten 110 Zeilen erst mal ein und der gleiche x-Wert steht (25), mit 110 Y-Werten und den dazugehörigen Temperaturen steht. Ab Zeile 111 fängt es dann mit dem 2. X-Wert (50) an und es folgen 110 Werte für Y und Temp. des X Wertes 50.. usw.
Ich komme einfach nicht drauf, wie ich aus den so geordneten Daten eine Grafik bekomme.
Viell. kennt sich jemand damit aus. Ich hoffe, habe mein Problem halbwegs verständlich dargestellt.
Danke für die Hilfe.
ich habe bisher kaum mit R (Studio) gearbeitet. Nun muss ich aus einer Tabelle ein Contour plot erstellen. Ich habe schon einige Funktionen ausprobiert, jedoch kommt nie das raus, was ich haben möchte.
Bei meinen Daten handelt es sich um eine Tabelle mit 10 Spalten und etlichen Zeilen (13.200). Die ersten 3 Spalten brauche ich (X-Wert in Metern, Y-Wert in Metern, Temperatur in Kelvin).
Das Problem ist jetzt, dass in den ersten 110 Zeilen erst mal ein und der gleiche x-Wert steht (25), mit 110 Y-Werten und den dazugehörigen Temperaturen steht. Ab Zeile 111 fängt es dann mit dem 2. X-Wert (50) an und es folgen 110 Werte für Y und Temp. des X Wertes 50.. usw.
Ich komme einfach nicht drauf, wie ich aus den so geordneten Daten eine Grafik bekomme.
Viell. kennt sich jemand damit aus. Ich hoffe, habe mein Problem halbwegs verständlich dargestellt.
Danke für die Hilfe.
Re: Wie erstelle ich ein contour plot?
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Wie erstelle ich ein contour plot?
Hallo Johannes,
willkommen im Forum!
Was funktioniert dann an dem Plot mit contour() nicht?
Machst Du alles so, wie es im Hilfetext der Funktion steht?
Gruß, Jörg
willkommen im Forum!
Was funktioniert dann an dem Plot mit contour() nicht?
Machst Du alles so, wie es im Hilfetext der Funktion steht?
Gruß, Jörg
Re: Wie erstelle ich ein contour plot?
Hallo Jörg,
mein erstes Problem ist, dass die Werte, welche ich darstellen möchte, nicht wie in einem Raster dargestellt sind. Die dazugehörigen x und y Werte habe ich zwar auch in der Tabelle, jedoch müsste man diese erst mal zuordnen. Ich habe mir die vorinstallierte Datei "volcano" angeschaut. Hier sind die darzustellenden Werte sortiert (Bild volcano).
Hätte ich meine Daten (Bild data) so angeordnet, würde mir das schon sehr helfen, denke ich.
Viele Grüße,
Johannes
mein erstes Problem ist, dass die Werte, welche ich darstellen möchte, nicht wie in einem Raster dargestellt sind. Die dazugehörigen x und y Werte habe ich zwar auch in der Tabelle, jedoch müsste man diese erst mal zuordnen. Ich habe mir die vorinstallierte Datei "volcano" angeschaut. Hier sind die darzustellenden Werte sortiert (Bild volcano).
Hätte ich meine Daten (Bild data) so angeordnet, würde mir das schon sehr helfen, denke ich.
Viele Grüße,
Johannes
Zuletzt geändert von johannes am Do Mai 02, 2019 3:01 pm, insgesamt 1-mal geändert.
Re: Wie erstelle ich ein contour plot?
Hallo Johannes,
das Problem der Transformation der Daten fällt wahrscheinlich in den Bereich "from long to wide"
https://stackoverflow.com/questions/589 ... ide-format
Vielleicht hilft Dir die Funktion xtabs() - das ist die einfachste Variante, wenn der Leistungsumfang der Funktion einem ausreicht.
Gruß, Jörg
das Problem der Transformation der Daten fällt wahrscheinlich in den Bereich "from long to wide"
https://stackoverflow.com/questions/589 ... ide-format
Vielleicht hilft Dir die Funktion xtabs() - das ist die einfachste Variante, wenn der Leistungsumfang der Funktion einem ausreicht.
Gruß, Jörg
Re: Wie erstelle ich ein contour plot?
Danke für die schnelle Antwort. Ich habs mal so versucht, hat jedoch nicht geklappt. Kam total verwirrender Datensalat raus.
Ich habe jetzt eine andere Lösung gefunden, und zwar die Funktion plot_ly.
Leider habe ich nun hier das Problem, dass ich nicht nur den für mich interessanten Bereich darstellen kann, sondern immer alles dargestellt wird. Für mich wäre lediglich der Bereich 0-10 auf der y - Achse interessant. Hättest Du dafür eine Lösung parat?
Ich habe jetzt eine andere Lösung gefunden, und zwar die Funktion plot_ly.
Leider habe ich nun hier das Problem, dass ich nicht nur den für mich interessanten Bereich darstellen kann, sondern immer alles dargestellt wird. Für mich wäre lediglich der Bereich 0-10 auf der y - Achse interessant. Hättest Du dafür eine Lösung parat?
Re: Wie erstelle ich ein contour plot?
Hallo Johannes,
ohne Daten fühle ich mich nicht in der Lage, konkrete Hinweise zu geben.
viewtopic.php?f=20&t=11
https://stackoverflow.com/questions/596 ... le-example
Gruß, Jörg
ohne Daten fühle ich mich nicht in der Lage, konkrete Hinweise zu geben.
viewtopic.php?f=20&t=11
https://stackoverflow.com/questions/596 ... le-example
Gruß, Jörg
Re: Wie erstelle ich ein contour plot?
Danke, habs hinbekommen:
Zuletzt geändert von johannes am Fr Mai 03, 2019 4:07 pm, insgesamt 1-mal geändert.
Re: Wie erstelle ich ein contour plot?
Danke, habs hinbekommen:
Nun stellt sich mir nur noch die Frage, wie ich das ganze als img oder pdf speichern kann und wie ich der Skala einen Titel geben und diese mit festen Werten beschriften kann, die nicht verschwinden, wenn meine Werte im Diagramm nicht bis in diesen Bereich kommen.
Code: Alles auswählen
# Ordnerpfad auswählen
setwd("...")
# Tabelle einlesen
dateiname <- ".....dat"
table <- read.table(dateiname, header = TRUE)
# Parameterauswahl: T = Temperatur ...
Parameter <- "T"
von <- 285
bis <- 290
# Achsen erstellen
a <- seq(from = 25, to = 5975, by = 50)
b <- c( 0.0150, table$Z[2:110])
Breite <- table$X
Hoehe <- table$Z
Temp <- table$T
# Schriftgröße
font_size <- 0.7
# Matrix erstellen
mtrx1 <- acast(table, Breite~Hoehe, value.var=Parameter)
# falsch rum mtrx2 <- acast(table28, Hoehe~Breite, value.var = "Parameter")
# Maßeinheiten
inMeter <- function(x) {
paste0(x, " m")
}
inCelsius <- function(x) {
paste0(x, " K")
}
# contour anzeigen
filled.contour(x= a, y=b, mtrx1,
xlim = range(a, finite = TRUE),
ylim = range(0, 10, finite = TRUE),
zlim = range(von, bis, finite = TRUE),
plot.axes = {
#axis(1, labels = inMeter(a), at = as.numeric(a), las =1 , cex.axis = 0.7) # x-Achse
#axis(2, labels = inMeter(b), at = as.numeric(b), las =1, cex.axis = 0.5) # y-Achse
axis(1, at = NULL, cex.axis = font_size) # x-Achse
axis(2, at = NULL, cex.axis = font_size) # y-Achse
},
key.axes = {
axis(4, at = pretty(Temp), labels = inCelsius(pretty(Temp)))
})
Re: Wie erstelle ich ein contour plot?
Hallo Johannes,
um eine Grafik in einer PDF-Datei abzulegen, verwendet man die Funktion pdf():Welches Format meinst Du mit img? Schau bitte mal hier:
Gruß, Jörg
um eine Grafik in einer PDF-Datei abzulegen, verwendet man die Funktion pdf():
Code: Alles auswählen
pdf(...) # Datei anlegen/öffnen
... # Grafik erzeugen
dev.off() # Datei schließen
Code: Alles auswählen
help("png")