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

Code: Alles auswählen

str(Tabelle)

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