Hallo zusammen,
ich habe folgenden Output:
head(pred_conf)
fit lwr upr
1 14.92164 11.42516 18.41812
2 14.91007 11.41747 18.40267
3 14.89850 11.40979 18.38722
4 14.88693 11.40210 18.37177
5 14.87536 11.39441 18.35632
6 14.86379 11.38672 18.34086
> head(pred_ind)
fit lwr upr
1 14.92164 7.258563 22.58472
2 14.91007 7.248763 22.57138
3 14.89850 7.238963 22.55804
4 14.88693 7.229160 22.54470
5 14.87536 7.219356 22.53137
6 14.86379 7.209550 22.51804
Dazu möchte ich jetzt eine Grafik mit 5 Linien erstellen:
Die Punkte aus der Spalte "fit" (sind für beide Outputs identisch), für die Werte lwr & upr aus dem oberen Output sowie die Werte für lwr & upr aus dem unteren Output.
Wie gehe ich hier vor?
Vielen Dank!
VG
Robin
Grafik mit 5 Linien
Re: Grafik mit 5 Linien
Hallo,
besser ist es immer, die Daten nicht als Output, sondern in einer in R lesbaren Form anzugeben. Kannst Du mit dem folgenden was anfangen?
Wenn Du die Zeilen der Reihe nach einzeln ausführen lässt dann siehst Du, was welche Zeile bewirkt und kannst das ggf. noch für Deine Zwecke anpassen. Die Bedeutung von Grafikparametern wie col, pch und lty findest Du mit `help(par)` heraus.
Wenn Du stattdessen lieber das Grafiksystem "ggplot2" verwenden möchtest, dann würde man üblicherweise die Daten erst umstellen. Behelfsmäßig kann man aber grundsätzlich auch sowas hier machen, um einen vergleichbaren Plot ohne Umstellen der Daten zu erreichen, aber so ist das eigentlich nicht gedacht:
LG,
Bernhard
besser ist es immer, die Daten nicht als Output, sondern in einer in R lesbaren Form anzugeben. Kannst Du mit dem folgenden was anfangen?
Code: Alles auswählen
# Du solltest die Daten in passender Form schon in R haben, wir greifen hier Dein Beispiel auf
a <- read.table(header = TRUE, text =
"line fit lwr upr
1 14.92164 11.42516 18.41812
2 14.91007 11.41747 18.40267
3 14.89850 11.40979 18.38722
4 14.88693 11.40210 18.37177
5 14.87536 11.39441 18.35632
6 14.86379 11.38672 18.34086")
b <- read.table(header = TRUE, text =
"line fit lwr upr
1 14.92164 7.258563 22.58472
2 14.91007 7.248763 22.57138
3 14.89850 7.238963 22.55804
4 14.88693 7.229160 22.54470
5 14.87536 7.219356 22.53137
6 14.86379 7.209550 22.51804")
# Neuen Plot anlegen mit plot
plot(x = a$fit, y = a$lwr, col = 1, lty = 1, pch = 15, type = "b",
xlim = c(14.85, 14.95), ylim = c(7, 23),
xlab = "Beschriftung X-Achse", ylab = "Beschriftung Y-Achse",
main = "Robins plot")
# ggf. Gitternetzlinien mit abline
abline(h = c(1:30), col="lightgrey", lty = 3)
abline(v = seq(14, 15, .005), col = "lightgrey", lty = 3)
# bislang noch fehlende Werte einzeichnen
lines(x = a$fit, y = a$upr, col = 1, lty = 2, pch = 15, type = "b")
lines(x = b$fit, y = b$lwr, col = 2, lty = 1, pch = 16, type = "b")
lines(x = b$fit, y = b$upr, col = 2, lty = 2, pch = 16, type = "b")
# noch schicker wird es mit einer Legende
legend("topright", col = c(1,2), pch = c(15, 16),
legend = c("a in schwarz", "b in rot"), inset = .01)
Wenn Du die Zeilen der Reihe nach einzeln ausführen lässt dann siehst Du, was welche Zeile bewirkt und kannst das ggf. noch für Deine Zwecke anpassen. Die Bedeutung von Grafikparametern wie col, pch und lty findest Du mit `help(par)` heraus.
Wenn Du stattdessen lieber das Grafiksystem "ggplot2" verwenden möchtest, dann würde man üblicherweise die Daten erst umstellen. Behelfsmäßig kann man aber grundsätzlich auch sowas hier machen, um einen vergleichbaren Plot ohne Umstellen der Daten zu erreichen, aber so ist das eigentlich nicht gedacht:
Code: Alles auswählen
library(ggplot2)
ggplot(a) +
geom_line(data = a, mapping = aes(x = fit, y = lwr), col = 1) +
geom_line(data = a, mapping = aes(x = fit, y = upr), col = 1) +
geom_line(data = b, mapping = aes(x = fit, y = lwr), col = 2) +
geom_line(data = b, mapping = aes(x = fit, y = upr), col = 2) +
geom_point(data = a, mapping = aes(x = fit, y = lwr), pch = 1) +
geom_point(data = a, mapping = aes(x = fit, y = upr), pch = 1) +
geom_point(data = b, mapping = aes(x = fit, y = lwr), pch = 2) +
geom_point(data = b, mapping = aes(x = fit, y = upr), pch = 2) +
labs(title = "Robins plot", xlab ="fit", ylab ="Y-Beschriftung") +
theme_bw()
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte