Wie erstelle ich Grafiken, was ist zu beachten?
Moderatoren: EDi , jogo
G-Rizzle
Beiträge: 13 Registriert: Do Nov 18, 2021 1:51 pm
Beitrag
von G-Rizzle » Do Nov 18, 2021 1:54 pm
Hi,
Ich habe einen Datensatz, bei dem ich den Temperaturverlauf über viele Tage habe. Den möchte ich plotten. Mein Code sieht folgend aus (provisorisch)
Code: Alles auswählen
ggplot() + geom_line(data = datensatz, mapping = aes(x = Datum, y=Mittelwert, group = 1))
Die Daten auf der X-Achse sind leider nicht lesbar, da zu viele zusammengequetscht sind. Wie kann ich das ganze entzerren? Etwa, dass nur ein Datum die Woche angezeigt wird o.ä.?
Besten Dank schonmal!
bigben
Beiträge: 2771 Registriert: Mi Okt 12, 2016 9:09 am
Beitrag
von bigben » Do Nov 18, 2021 4:03 pm
Hallo G-Rizzle,
irgendwas stimmt da nicht und ich tippe auf das falsche Format. Kannst Du bitte mal die Antwort auf
posten? Noch spezieller
Was bezweckst Du mit "group = 1"?
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
EDi
Beiträge: 1599 Registriert: Sa Okt 08, 2016 3:39 pm
Beitrag
von EDi » Do Nov 18, 2021 11:15 pm
scale_x_date ist dein Freund hier
https://ggplot2.tidyverse.org/reference/scale_date.html
Code: Alles auswählen
last_month <- Sys.Date() - 0:29
df <- data.frame(
date = last_month,
price = runif(30)
)
base <- ggplot(df, aes(x = date, y = price)) +
geom_line()
base
base +
scale_x_date(date_breaks = "1 day")
base +
scale_x_date(date_breaks = "1 week")
base +
scale_x_date(date_breaks = "1 month")
G-Rizzle
Beiträge: 13 Registriert: Do Nov 18, 2021 1:51 pm
Beitrag
von G-Rizzle » Mi Nov 24, 2021 2:45 pm
bigben hat geschrieben: ↑ Do Nov 18, 2021 4:03 pm
Hallo G-Rizzle,
irgendwas stimmt da nicht und ich tippe auf das falsche Format. Kannst Du bitte mal die Antwort auf
posten? Noch spezieller
Was bezweckst Du mit "group = 1"?
LG,
Bernhard
Hi! Danke dir schonmal. Ich glaube tatsächlich, dass am Datenformat etwas nicht passt. Ich lese den Datensatz ein und mache direkt ein DF daraus :
Code: Alles auswählen
df = data.frame(read.csv("temperaturverlauf_KL_september.csv"))
Lasse ihn darauf anzeigen, alles gut;
--> 'list' ?!?
bigben
Beiträge: 2771 Registriert: Mi Okt 12, 2016 9:09 am
Beitrag
von bigben » Mi Nov 24, 2021 3:16 pm
Hallo G-Rizzle,
G-Rizzle hat geschrieben: ↑ Mi Nov 24, 2021 2:45 pm Lasse ihn darauf anzeigen, alles gut;
Und ich glaube nicht, dass Du an der normalen Anzeige erkennst, ob alles gut ist.
Nach typeof(df) hat keiner gefragt. Die Frage lautet, ob Deine Datumsvariable auf der x-Achse als Datum oder als Text eingelesen worden ist.
Gruß,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
G-Rizzle
Beiträge: 13 Registriert: Do Nov 18, 2021 1:51 pm
Beitrag
von G-Rizzle » Do Nov 25, 2021 3:13 pm
Hi,
Der Typ des Vektors ist Liste, jeder Datumeintrag ist ein Integer. merkwürdig.
Umformatierung klappt wie zu sehen nicht.
Dateianhänge
bigben
Beiträge: 2771 Registriert: Mi Okt 12, 2016 9:09 am
Beitrag
von bigben » Do Nov 25, 2021 7:13 pm
Das ist komisch. Wenn ich so ein Datum mit
read.table einlese, dann ist das nicht vom Typ
integer sondern vom Typ
character und wenn ich es mit
as.Date() umwandle ist es immer noch nicht
integer sondern vom Typ
double :
Code: Alles auswählen
test <- read.table(text = "datum
2021-11-13
2021-11-14
2021-11-15",
header = TRUE)
datum_as_date <- as.Date(test[['datum']], format="%Y-%m-%d")
typeof(datum_as_date)
class(datum_as_date)
Ich schätze mal, ein reproduzierbares Beispiel wäre der schnellste und nachhaltigste Weg zum Erfolg.
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2085 Registriert: Fr Okt 07, 2016 8:25 am
Beitrag
von jogo » Fr Nov 26, 2021 8:51 am
$Species ist ein Faktor, das Ergebnis von typeof() ist "integer", weil Faktoren intern als integer kodiert werden.
Gruß, Jörg
bigben
Beiträge: 2771 Registriert: Mi Okt 12, 2016 9:09 am
Beitrag
von bigben » Fr Nov 26, 2021 1:16 pm
Danke Jörg, da bin ich nicht drauf gekommen
. Dann benutzt G-Rizzle wohl noch ein R Version 3.x und noch keine Version 4. Aktuell ist gerade Version 4.1.2.
Damit entspricht die Situation diesem Beispiel hier:
Code: Alles auswählen
test <- read.table(text = "datum wert
2021-11-01 0.8
2021-11-08 1.5
2021-11-09 1.3
2021-11-10 1.8
2021-11-11 1.8
2021-11-12 2.0
2021-11-13 2.3
2021-11-14 2.4
2021-11-15 2.45",
header = TRUE,
stringsAsFactors = TRUE)
test$datum_as_date <- as.Date(as.character(test$datum), "%Y-%m-%d")
library(ggplot2)
ggplot(test, aes(x = datum_as_date, y = wert)) +
geom_col()
HTH,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte