Abline Plot aus einer Tabelle

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Moritz F.
Beiträge: 21
Registriert: Mo Jan 22, 2018 3:17 pm

Abline Plot aus einer Tabelle

Beitrag von Moritz F. »

Hallo zusammen,

ich möchte mit der Funktion abline 50 verschiedene Linien aus einer Tabelle in einem Plot darstellen.

So habe ich die Funktion immer benutzt.

Code: Alles auswählen

model=lm(y~x)

Code: Alles auswählen

abline(model, col = "red")
Wie aber schaffe ich es einen Plot zu generieren, welcher 50 verschiedene Linien plottet. Die Werte für die Linien stehen in einer Tabelle (Intercept und Slope).

Code: Alles auswählen

abline(tabelle$Intercept,tabelle$Slope)
Hier kann ich eben nur einen Wert ansteuern, ich möchte aber alle 50 Zeilen ansprechen

n Intercept Slope Regressionskoeffizienten
16 4.180543 1.2304688 c(`(Intercept)` = 4.18054329967619, x = 1.23046883896196)
16 5.250820 0.7669453 c(`(Intercept)` = 5.25081984564733, x = 0.766945271154767)
16 4.801265 0.9525827 c(`(Intercept)` = 4.80126479143226, x = 0.95258266650622)
16 4.180543 1.2304688 c(`(Intercept)` = 4.18054329967619, x = 1.23046883896196)
16 5.250820 0.7669453 c(`(Intercept)` = 5.25081984564733, x = 0.766945271154767)
16 5.200474 0.8035034 c(`(Intercept)` = 5.20047419269082, x = 0.803503383191166)
16 5.902599 0.4261399 c(`(Intercept)` = 5.90259941528017, x = 0.426139869690726)
.....................

Vielen Dank für die Hilfe
Moritz
schubbiaschwilli
Beiträge: 253
Registriert: Di Jun 27, 2017 12:09 pm

Re: Abline Plot aus einer Tabelle

Beitrag von schubbiaschwilli »

Gude!
Wie aber schaffe ich es einen Plot zu generieren, welcher 50 verschiedene Linien plottet.
Ich komme nur auf die Lösung, das über eine Schleife zu machen.
Die Werte für die Linien stehen in einer Tabelle (Intercept und Slope).
Siehe http://www.forum.r-statistik.de/viewtop ... 381#p14381

Dank&Gruß
schbbiaschwilli
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Abline Plot aus einer Tabelle

Beitrag von Athomas »

Ich kann nur ggplot:

Code: Alles auswählen

library(ggplot2)

Geraden <- data.frame(intercept=runif(50, -2, 2), slope=runif(50, -2, 2), 
                     Farbe=c("red","green","blue","orange","violet"))

Strickmuster <- ggplot(Geraden) +
  theme_bw() +
  geom_abline(aes(slope=slope, intercept=intercept, colour=Farbe)) +
  scale_x_continuous(limits=c(-3,3)) +
  scale_y_continuous(limits=c(-3,3)) + 
  guides(colour=FALSE)
Strickmuster
schubbiaschwilli
Beiträge: 253
Registriert: Di Jun 27, 2017 12:09 pm

Re: Abline Plot aus einer Tabelle

Beitrag von schubbiaschwilli »

Gude!

OK, dann musst du halt einen entsprechenden Dataframe bauen - Ohne Bauen, nur mit Eintippen also ungefähr so:

Code: Alles auswählen

library(ggplot2)
data <- data.frame(variable=c("a","a","b","b"), x=c(1,10,1,10), y=c(2,3,4,6))
ggplot(data, aes(x=x, y=y, col=variable)) + geom_line()
Dank&Gruß
schbbiaschwilli
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Abline Plot aus einer Tabelle

Beitrag von bigben »

Wenn explizit nach abline gefragt wird, sind ggplot-Antworten irgendwie nur halb on topic. Fürs Publizieren find ich ggplot2 schöner, aber so einfache Aufgaben hat man mit R jahrzehntelang gut ohne lösen können.

Code: Alles auswählen

bsp <- data.frame(slope = runif(50, .3, .7), intercept = rnorm(50, 2))

# Erst brauchen wir einen Plot, der später die ablines aufnehmen kann
plot(NA, xlim = c(-10, 20), ylim = c(-8,22), xlab="x", ylab="y")
abline(h = 0, lty = 2)
abline(v = 0, lty = 2)
# da hinein malen wir jetzt die ablines
for(i in 1:nrow(bsp))
  abline(bsp$intercept[i], bsp$slope[i], col = rgb(0, 0, 0, .4))


Und sollte das jetzt wegen der for-Schleife nicht passen, geht auch das hier ganz gut:

Code: Alles auswählen

Vectorize(abline)(bsp$intercept, bsp$slope, col = rgb(0, 0, .4, .4))
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
schubbiaschwilli
Beiträge: 253
Registriert: Di Jun 27, 2017 12:09 pm

Re: Abline Plot aus einer Tabelle

Beitrag von schubbiaschwilli »

Gude!

Hier sieht man den Unterschied Mathematiker vs Programmierer...

Code: Alles auswählen

MinMax <- c(1950, 2020)
alpha <- Ntrend_muenchen$coefficients[1]
beta <- Ntrend_muenchen$coefficients[2]
MinMax_Values <- MinMax*beta + alpha
lines(x=MinMax, y=MinMax_Values, col="green", lwd=2, lty=2)

Code: Alles auswählen

# Erst brauchen wir einen Plot, der später die ablines aufnehmen kann
plot(NA, xlim = c(-10, 20), ylim = c(-8,22), xlab="x", ylab="y")
abline(h = 0, lty = 2)
abline(v = 0, lty = 2)
# da hinein malen wir jetzt die ablines
for(i in 1:nrow(bsp))
  abline(bsp$intercept[i], bsp$slope[i], col = rgb(0, 0, 0, .4))
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Abline Plot aus einer Tabelle

Beitrag von EDi »

Hier sieht man den Unterschied Mathematiker vs Programmierer...
Wer ist was?
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
Bild.
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Abline Plot aus einer Tabelle

Beitrag von bigben »

EDi hat geschrieben: Do Feb 11, 2021 8:28 pm
Hier sieht man den Unterschied Mathematiker vs Programmierer...
Wer ist was?
Ich vermute es geht darum, dass schubbiaschwillis' Code aus dem anderen Thread einen deklarativen Stil hat, meine erste Variante ist imperatives Programmieren? Vielleicht auch um den Ansatz, dass schubbiaschwilli als erstes nachgedacht hat, wie man aus den gegebenen Daten geeignete Start- und Endpunkte ausrechnen kann, was Formeln und Berechnungen erfordert, während ich einfach eine Funktion verwendet habe, die die gegebenen Daten direkt als Argument annimmt?

Egal, ob ich nun als Mathematiker (weniger wahrscheinlich) oder als Programmierer (wahrscheinlicher) eingestuft wurde, bedanke ich mich für das Kompliment.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Abline Plot aus einer Tabelle

Beitrag von Athomas »

EDi hat geschrieben: Do Feb 11, 2021 8:28 pm
Hier sieht man den Unterschied Mathematiker vs Programmierer...
Wer ist was?
Ich hab's auch nicht verstanden :roll: ...
schubbiaschwilli
Beiträge: 253
Registriert: Di Jun 27, 2017 12:09 pm

Re: Abline Plot aus einer Tabelle

Beitrag von schubbiaschwilli »

Gude!

OK, ich dachte, Bernhard wäre ITler (wegen dem 'Programmiere stets so...') - Dann würde es passen.
Ich kann es als Mathematiker sehen, also berechne ich die Punkte, oder mache es wie ein Informatiker und suche eine geeignete Funktion.
Eine Verallgemeinerung von: "I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail."

Dank&Gruß
schbbiaschwilli
Antworten