Seite 1 von 1
Punkte gewichten
Verfasst: Mi Mär 14, 2018 1:29 pm
von Moritz F.
Hallo liebe R-Gemeinde,
ich möchte Punkte in einer Grafik gewichten. Ich habe eine Grafik mit 400 Punkten. Die X-Achse beschreibt die Hangneigung von 0-90° und die Y-Achse die Gerinneneigung von 0-90°.
Ich habe nun 400 Punkte die normalverteilt in der Graphik liegen und möchte nun diese Punkte größer und kleiner darstellen, da hinter jedem Punkt ein R² steckt.
Ich möchte also die höheren R² größer darstellen und einen "dritten" Faktor implementieren.
Kann mir jemand weiter helfen?
Vielen Dank schonmal
Moritz
Re: Punkte gewichten
Verfasst: Mi Mär 14, 2018 2:47 pm
von bigben
Hallo!
Ja, wir können Dir weiter helfen. Geht das in die richtige Richtung?
Code: Alles auswählen
x <- runif(20)
y <- runif(20)
s <- sample(1:5, 20, replace=TRUE)
plot(x, y, cex=s)
Je nach Vorliebe alternativ auch:
Code: Alles auswählen
library(ggplot2)
d.f <- data.frame(x = runif(20),
y = runif(20),
R_squared = runif(20,0,1))
ggplot(d.f) + geom_point(aes(x=x, y=y, size=R_squared))
LG,
Bernhard
Re: Punkte gewichten
Verfasst: Mi Mär 14, 2018 7:49 pm
von Moritz F.
Vielen Dank für deine schnelle Antwort.
Ja es geht in die richtige Richtung.
Aber wenn ich deine Codes anwende habe ich immer nur ein range von 0-1.
Ich brauche ja die Neigung von 0-90 Grad und der Punkt soll als r² zwischen 0 und 1 größer werden.
Ich hab mal das geschrieben was ich bereits habe, dann wird es vll ersichtlicher.
Code: Alles auswählen
Tabelle=read.table("Tabelle.txt",sep ="\t" , header = TRUE)
x <- X-Achse
y <- Y-Achse
in cer dritten Spalte in der Tabelle steht die Größe des r²
Code: Alles auswählen
plot(x, y,xlim=c(0,90),ylim=c(0,90),ylab="Y",xlab="X",main="Überschrift",pch=19,cex=1)
MfG
Moritz
Re: Punkte gewichten
Verfasst: Do Mär 15, 2018 5:56 am
von bigben
Das bringt nicht viel Erkenntnis, weil wir ja Deine csv Datei nicht haben. Poste bitte mal das Ergebnis von
Re: Punkte gewichten
Verfasst: Fr Mär 16, 2018 12:33 am
von Moritz F.
> str(Tabelle)
'data.frame': 400 obs. of 4 variables:
$ PK_Nr : int 1 2 3 4 5 6 7 8 9 10 ...
$ GNSW : int 2 19 1 2 15 0 12 3 10 15 ...
$ HNSW : int 55 57 35 54 0 16 19 4 22 48 ...
$ Bestimmtheitsmaß_r²: num 0.1041 0.1049 0.2696 0.0992 0.3289 ...
LG Mo
Re: Punkte gewichten
Verfasst: Fr Mär 16, 2018 9:31 am
von dvf
Wo ist das Problem?
Du brauchst doch für x und y nur GNSW und HNSW (oder umgekehrt) einzusetzen und je nach Darstellungswunsch cex oder size=Bestimmtheitsmaß_r² setzen.
Gruß
dvf
Re: Punkte gewichten
Verfasst: Fr Mär 16, 2018 10:05 am
von Moritz F.
Okay das klappt.
Kann ich jetzt noch bestimmten Bereichen (r² = 0.3-0.4 und r² = 0.4-0.5) bestimmte Punktgrößen zuordnen?
Danke schnonmal
LG Moritz
Re: Punkte gewichten
Verfasst: Fr Mär 16, 2018 1:49 pm
von bigben
Du kannst Dir mit apply oder ifelse Gruppenvariablen erstellen, etwa so:
Tabelle$Gruppe <- ifelse(Tabelle$Bestimmtheitsmaß_r² < 0.4, 1, 2)
und diese Gruppe kannst Du dann auch in Grafikanweisungen verwenden. Ich würde aber vorschlagen, dass nicht für die Größe, aber vielleicht für die Farbe zu verwenden
with(Tabelle, plot(GNSW, HNSW, col=Gruppe, cex=Bestimmtheitsmaß_r²,))
LG,
Bernhard
Re: Punkte gewichten
Verfasst: Sa Mär 17, 2018 11:30 am
von Moritz F.
Super das klappt
Ist es mir noch möglich Flächen um die Punkte herum (sozusagen ein buffer) in veschiedenen Grauflächen zu färben?
Vll hat da noch jemand eine Idee?
LG Moritz
Re: Punkte gewichten
Verfasst: Sa Mär 17, 2018 12:17 pm
von Athomas
Zumindest in ggplot2 ist es möglich, verschiedene Layer übereinander zu plotten.
Du kannst dickere Punkte in Graufarben quasi als Basis verwenden und darüber die farbigen Punkte legen, etwa so:
Code: Alles auswählen
DF <- data.frame(x=1:10, wgt=runif(10, min=5, max=15), type=as.factor(sample(1:2,10,replace=TRUE)))
DF$y <- 2*DF$x - 3 + rnorm(10)
library(ggplot2)
Grafik <- ggplot(DF) +
theme_bw() +
geom_point(aes(x, y, size=wgt, alpha=wgt), colour="grey") +
scale_alpha_continuous(range = c(0.3, 0.8)) +
scale_size(range = c(4,15)) +
geom_point(aes(x, y, colour=type), size=2) +
scale_colour_manual(values=c("red","blue")) +
guides(alpha=FALSE, size=FALSE)
Grafik