6 Stimmen

Plotten einer Box innerhalb von filled.contour Plots in R?

Ich versuche, eine Box innerhalb eines filled.contour-Plots zu plotten, aber leider, wenn ich die Linien() plotten, nachdem die filled.contour-Plot erstellt wird, ist die Figur nach rechts verschoben, weil die Skala das Bild nach links zwingt, aber die Box bleibt an den gleichen Koordinaten. So sieht mein Code aus:

dev.new(width=6,height=7)
mypredict<-matrix(data=mypredict,nrow=20,ncol=25)
filled.contour(x=seq(from=-1.5,to=1.5,length=20),
y=seq(from=1,to=3.75,length=25),
z=mypredict,
col=hsv(h=seq(from=2/3,to=0,length=20),s=1,v=1)
)
top <- 3.42
bot <- 1.56
lines(c(-1,-1),c(bot,top))
lines(c(1,1),c(bot,top))
lines(c(-1,1),c(top,top))
lines(c(-1,1),c(bot,bot))

Weiß jemand, wie ich diese Linien mit der Funktion filled.contour plotten kann? Andernfalls werden die Linien nicht korrekt auf das Hauptbild geplottet, da die Skala/Legende des Diagramms auf der rechten Seite platziert ist.

Merci !

6voto

nico Punkte 49590

Die Handbuchseite für filled.contour erklärt das Problem (und gibt eine Lösung an)

Diese Funktion verwendet derzeit die Funktion "Layout" und ist daher auf die auf die Anzeige einer ganzen Seite beschränkt. Als Alternative können die Funktionen 'levelplot' und 'contourplot' Funktionen aus dem 'lattice' Paket, die in Mehrfeld-Anzeigen funktionieren.

Die von 'filled.contour' erzeugte Ausgabe ist eigentlich eine Kombination von zwei Parzellen; eine ist die ausgefüllte Kontur und eine ist die Legende. Für diese beiden Parzellen werden zwei getrennte Koordinatensysteme eingerichtet, aber sie werden nur intern verwendet - sobald die Funktion zurückgegeben hat sind diese Koordinatensysteme verloren. Wenn Sie die Hauptkonturdarstellung mit Anmerkungen versehen wollen Hauptkonturdiagramm kommentieren möchten, zum Beispiel um Punkte hinzuzufügen, können Sie die Grafikbefehle in dem Argument "plot.axes" angeben. Ein Beispiel ist unten angeführt.

Im Wesentlichen übergeben Sie also einige Anweisungen als plot.axes Parameter, um das Standardverhalten außer Kraft zu setzen.

In Ihrem Beispiel:

filled.contour(x = seq(from=-1.5,to=1.5,length=20),
      y = seq(from=1,to=3.75,length=25), z = mypredict,
      col = hsv(h=seq(from=2/3,to=0,length=20),s=1,v=1),
      plot.axes = {axis(1); axis(2); rect(left, bottom, right, top);})

Beachten Sie, dass Sie die beiden Achsen neu erstellen müssen, da sie sonst nicht gezeichnet werden. Außerdem ist es nicht notwendig, die lines Anweisung, wenn es eine rect Funktion! :)

Ich hoffe, das hilft

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X