Punkte mit Linien verbinden aber sortiert!

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

mpaul
Beiträge: 9
Registriert: Fr Mär 08, 2019 10:47 am

Punkte mit Linien verbinden aber sortiert!

Beitrag von mpaul »

Hallo, ich habe diesen Code:

Code: Alles auswählen

#2 stichproben:
MG_BP<-c(760,340,3137,900,3320,1682,1470,1084,2880,850,70,1390,235,2235)
MG_noBP<-c(48,722,852,1685,1385,1392,2530,1709,1980,3420,3420,3540,4080,4205)

#2 mittelwerte und standarderror:
m2=c(mean(MG_BP), mean(MG_noBP))
se2=c(sd(MG_BP)/sqrt(length(MG_BP)),sd(MG_noBP)/sqrt(length(MG_noBP)))

#der plot damit sie nebeneinander sind:
plot(jitter(rep(c(0,1), each=14)),c(MG_BP, MG_noBP),axes=FALSE,xlab="", ylab="")
box()
axis(side=1, at=0:1, labels=c("backpack", "no backpack"))
axis(side=2, at=seq(0,4500,500))
points(c(0,1), m2, pch=15, col="red")
arrows(x0=c(0,1), y0=m2-se2, y1=m2+se2, code=3, angle=90, length=.15)
ich möchte jetz die jeweiligen punkte die zusammen gehören mit einer Linie verbinden,
also zum Bsp. den ersten Wert von MG_BP (760) mit dem ersten von MG_noBP (48) usw.
type='b' verbiindet die nur nacheinander.

hab es auch mit einer matrix für die beiden versucht, aber das problem ist glaub ich das ich die punkte im plot ja als ein vektor mach und jitter als anderen.
Vielleicht kann mir auch jemand sagen, wie ich die Daten genauso darstelle aber ohne jitter....also nebeneinander!
Danke schonmal....ist mein erster foreneintrag, da ich immer denke das dauert so ewig mit antwort das es dann zu spät ist...also mal sehn
Zuletzt geändert von jogo am Fr Mär 08, 2019 11:33 am, insgesamt 1-mal geändert.
Grund: Code formatiert

mpaul
Beiträge: 9
Registriert: Fr Mär 08, 2019 10:47 am

Re: Punkte mit Linien verbinden aber sortiert!

Beitrag von mpaul »

ich glaube es ist nicht wirklich möglich mit dem jitter befehl davor.
also lautet die frage eher:

Wie stelle ich zwei stichproben in einem plot nebeneinander dar und verbinde diese mit linien wie oben beschrieben????

bigben
Beiträge: 1448
Registriert: Mi Okt 12, 2016 9:09 am

Re: Punkte mit Linien verbinden aber sortiert!

Beitrag von bigben »

Hallo!

Du könntest einfach nur ganz wenig Jitter verwenden, so dass es gerade eben reicht, um die einzelnen Punkte zu erkennen. Wie gefällt Dir das hier?

Code: Alles auswählen

plot(jitter(rep(c(0,1), each=14), factor = .1),c(MG_BP, MG_noBP),axes=FALSE,xlab="", ylab="", , xlim=c(-.4, 1.4))
box()
axis(side=1, at=0:1, labels=c("backpack", "no backpack"))
axis(side=2, at=seq(0,4500,500))
points(c(0,1), m2, pch=15, col="red")
arrows(x0=c(0,1), y0=m2-se2, y1=m2+se2, code=3, angle=90, length=.15)

for(i in 1:length(MG_BP))
  lines(x=c(0,1), y=(c(MG_BP[i], MG_noBP[i])))
oder Du speicherst die durch jitter entstandenen x-Positionen und verwendest sie für die Verbindungslinien wieder (ich hab auch die Mittelwerte ein wenig verrückt, dann wirkt es auf mich aufgeräumter)

Code: Alles auswählen

x.values <- jitter(rep(c(0,1), each=14), factor = .5)
plot(x.values, c(MG_BP, MG_noBP),axes=FALSE,xlab="", ylab="", , xlim=c(-.3, 1.3))
box()
axis(side=1, at=0:1, labels=c("backpack", "no backpack"))
axis(side=2, at=seq(0,4500,500))
points(c(-.2,1.2), m2, pch=15, col="red")
arrows(x0=c(-.2,1.2), y0=m2-se2, y1=m2+se2, code=3, angle=90, length=.15)

for(i in 1:length(MG_BP))
  lines(x=c(x.values[i], x.values[14+i]), y=(c(MG_BP[i], MG_noBP[i])), col="grey")
Danke schonmal....ist mein erster foreneintrag, da ich immer denke das dauert so ewig mit antwort das es dann zu spät ist...also mal sehn
Das habe ich jetzt nicht verstanden. So lange hast Du auch nicht warten müssen, auf Deine erste Antwort.

Viel Spaß noch mit R und im Forum,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

mpaul
Beiträge: 9
Registriert: Fr Mär 08, 2019 10:47 am

Re: Punkte mit Linien verbinden aber sortiert!

Beitrag von mpaul »

hab jetz selbst ne Lösung gefunden.
Für alle die das selbe Problem haben oder ähnlich:

Code: Alles auswählen

s<-seq(length(MG_BP))
mycol <- rgb(255, 0, 0, max = 255, alpha = 125, names = "red50")
plot.new()
[b]stripchart[/b](list(MG_BP,MG_noBP),vertical=T,pch=16,axes=FALSE,xlab="", ylab="")
segments(rep(1,length(MG_BP))[s],MG_BP[s],rep(2,length(MG_BP))[s],MG_noBP[s],col=1)
box()
axis(side=1, at=1:2, labels=c("backpack", "no backpack"))
axis(side=2, at=seq(0,4500,500))
points(c(1,2), m2, pch=15, col=mycol,cex=2)
arrows(x0=c(1,2), y0=m2-se2, y1=m2+se2, code=3, angle=90, length=.15,lwd=2,col="blue")
points(pch=15, col="red",cex=2)
ps: grad erst danach drauf geachtet das jemand geantwortet hat, sorry, manchmal bin ich unaufmerksam

deine lösung ist auch super
Zuletzt geändert von jogo am Fr Mär 08, 2019 2:50 pm, insgesamt 2-mal geändert.
Grund: Code formatiert

bigben
Beiträge: 1448
Registriert: Mi Okt 12, 2016 9:09 am

Re: Punkte mit Linien verbinden aber sortiert!

Beitrag von bigben »

Hallo mpaul,

bitte benutze code-Tags.

Ansonsten ist Dein code kein lauffähiges Beispiel:

Code: Alles auswählen

> segments(rep(1,length(MG_BP))[s],MG_BP[s],rep(2,length(MG_BP))[s],MG_noBP[s],col=1)
Error in segments(rep(1, length(MG_BP))[s], MG_BP[s], rep(2, length(MG_BP))[s],  : 
  object 's' not found
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

mpaul
Beiträge: 9
Registriert: Fr Mär 08, 2019 10:47 am

Re: Punkte mit Linien verbinden aber sortiert!

Beitrag von mpaul »

irgendwie sind bei deiner version die punkte nicht auf einer linie??

also bei der ersten version von dir sind die punkte fast auf einer linie und bei der zweiten wieder alle verschoben.
habe durch stripchart jetz das gefunden was ich suchte, trotzdem super vielen dank für den vorschlag
Zuletzt geändert von mpaul am Fr Mär 08, 2019 2:18 pm, insgesamt 1-mal geändert.

mpaul
Beiträge: 9
Registriert: Fr Mär 08, 2019 10:47 am

Re: Punkte mit Linien verbinden aber sortiert!

Beitrag von mpaul »

sorry, was sind code tags, hab jetz die nachricht geändert und die objekte reinkopiert...

mpaul
Beiträge: 9
Registriert: Fr Mär 08, 2019 10:47 am

Re: Punkte mit Linien verbinden aber sortiert!

Beitrag von mpaul »

das einzige was meinem code noch fehlt, ist das die datenpunkte nicht so an den rand gequetscht sind. du machst das in deinem einen script aber ich weiss nicht wie ich das bei mir einfüge????

bigben
Beiträge: 1448
Registriert: Mi Okt 12, 2016 9:09 am

Re: Punkte mit Linien verbinden aber sortiert!

Beitrag von bigben »

mpaul hat geschrieben:
Fr Mär 08, 2019 2:11 pm
irgendwie sind bei deiner version die punkte nicht auf einer linie??
Ich dachte, Du hättest jitter absichtlich eingeführt, weil Du nicht willst, dass alle Punkte auf einer Linie sind und habe mich daran orientiert. So extrem präzise war Deine Frage halt nicht gestellt. Wenn Du mit dem einfachen Stripchart mit allen Punkten auf einer Linie zufrieden bist, umso besser.

Zu den code-Tags folge dem Link in viewtopic.php?f=20&t=29
das einzige was meinem code noch fehlt, ist das die datenpunkte nicht so an den rand gequetscht sind. du machst das in deinem einen script
Das xlim-Argument im Plot-Aufruf ist der entscheidende Punkt.

Zu Deinem Code oben:

Code: Alles auswählen

> points(pch=15, col="red",cex=2)
Error in xy.coords(x, y) : argument "x" is missing, with no default
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

mpaul
Beiträge: 9
Registriert: Fr Mär 08, 2019 10:47 am

Re: Punkte mit Linien verbinden aber sortiert!

Beitrag von mpaul »

Vielen vielen Dank für alles, ja mit veränderten xlim werten funktionierts auch bei mir!

Und sorry wegen dem einen points(), das sollte da nicht drin sein.

Antworten