hinzufügen x=y-Linie zu scatterplot -
Ich bin mit der scatterplot-Funktion aus dem car Paket erzeugen Sie ein Streudiagramm.
Ich möchte in der Lage zum erzeugen einer Referenz-Linie in der Handlung werden sollte, dass x=y ist.
Ich habe versucht, mit abline und es tut fügen Sie eine Zeile, aber es ist nicht der x=y-Linie. Kann mir da jemand helfen?
Mein code ist wie folgt:
scatterplot(phenos$P1~pheno$P0, data=pheno,spread=FALSE,ylab="6 month timepoint", xlab="Baseline Timepoint", jitter=list(x=1, y=1))
abline(0,1)
Dank.
- Ich nehme an, Sie erstellen Sie einen boxplot anstelle eines Punktdiagramms. Richtig?
- Was bekommen Sie? Welche Art von Daten
P1
undP0
? - abline(0,1) fügt eine Linie Steigung=1 und intercept=0, so sollte es Sie geben, was Sie brauchen. Wenn Sie ein paar Daten zu Plotten (so können wir sehen, was Sie sehen, wenn Sie führen Sie das Streudiagramm und abline Befehle), können wir mehr helfen.
- zu bekommen ist x=y ,
lines(pheno$P0,pheno$P0)
car::scatterplot
macht viel fancy stuff intern, einschließlich der Verwendung derlayout()
Funktion, wird es viel schwieriger zu überlagern, etwas einfaches wie eine 1:1-Linie ...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist tatsächlich ziemlich schwierig/hackish, weil
scatterplot()
intern verwendetlayout
, das macht es schwer, die Kontrolle der Nebenhandlung, die momentan von der Grafik-Treiber. (Update: es ist schwieriger als ich dachte -- Einstellungpar("mfg")
muss gearbeitet haben, mehr oder weniger durch Zufall.)Make-up-Daten (update: die Verwendung von Daten mit dem Mittelwert x und y nicht gleich null, und nicht einander gleich, als es illustrieren die Schwierigkeiten, die naiv mit
abline()
mehr klar)Versuchen meine alte Strategie (die ja eigentlich nicht arbeiten, oder arbeiten nur unvorhersehbar):
}
Je nachdem, wie ich das mache, entweder ich bekomme Warnungen und Fehler oder falsche Antworten. Es scheint egal, ob ich die
scatterplot()
Aufruf innerhalb einer Funktion ... ??Zweiten Versuch, mehr konservativ: rekonstruieren Sie das layout von Grund auf neu.
Angesichts der Höhe der Aufwand und Fragilität dieser Lösung, es könnte in der Tat sein bestes, um hack
scatterplot
Optional ermöglichenabline()
festgelegt werden zusätzlich, oder Fragen Sie den maintainer, für die Fähigkeit ...scatterplot(y~x,data=d)
und dannabline(0,1)
- und der y=x Linie wurde korrekt aufgetragen. Tun Sie das gleiche Verhalten?abline()
ohne die fancy stuff in meiner Antwort), aber ... ich bin nicht überrascht. Sie müssen um genauer zu sein über das, was ", der code hat nicht funktioniert für mich, ich habe immer Fehler" bedeutet-und wenn möglich, zeigen Sie uns genau, indem Sie gemeinsam eine reproduzierbare Antwort -- siehe tinyurl.com/reproducible-000Können Sie Ihr Ziel erreichen, indem Sie die gleiche Funktion
abline
. Verwenden Sie die Funktionabline(a=0, b=1)
woa
undb
sind das abfangen und slop von der Linie jeweils. Diese zieht man eine gerade Linie von der formY = a + b*x
.Hoffe, das hilft.
Benutze ich nur die Segmente-Funktion:
segments(x0=0,y0=0,x1=45,y1=45)
Machen nur die y-Werte gehen nur über die Grenzen von Ihrem Grundstück.
Diese Funktion ist auch nett, da es nicht ändern Sie Ihre x-und y-Grenzen, so kann die Anlage sauber läuft, in Ihrem Diagramm, ohne präzise die x-und y-Werte.
plot
, nicht sicher überscatterplot