2012-06-03 10 views
6

Mein Problem die Herstellung eines Graphen betrifft für eine Publikation in R. ich die Plot-Funktion verwendet haben, wie folgt:R Grundstück, x-Achse und y-Achse berühren

plot(x=data$SL, y=data$BD, xlab = "SL (mm)", ylab = "BD (mm)", pch=data$pch) 

SL 51,7-73,7 reicht und BD von 13.5 bis 20.4. Leider darf ich noch keine Bilder posten.

Allerdings wollte ich die Box loswerden, die ich "Achsen = F" verwendet. Problem ist jetzt mangelnde Kontrolle über die Achsenfunktion. Früher habe ich:

axis(side=1, lwd=3, xpd=TRUE, at=c(min(data$SL):max(data$SL))) 
axis(side=2, lwd=3, xpd=TRUE, at=c(min(data$BD):max(data$BD))) 

Problem ist, dass ich nicht die y- und x-Achse erhalten verwalten kann zusammen auf dem gleichen Punkt wie in der Handlung mit der Box zu kommen. Wie lassen sich die x- und y-Achse berühren?

Antwort

3

Höchstwahrscheinlich Einstellung xaxs = "i" und yaxs = "i" wird Ihnen helfen, das gewünschte Verhalten zu erhalten.

plot(c(1,2,3),c(2,4,6),axes=F,xaxs = "i",yaxs="i",xlim=c(0,3),ylim=c(0,6)) 
axis(side=1, lwd=3, xpd=TRUE, at=0:3) 
axis(side=2, lwd=3, xpd=TRUE, at=seq(0,6,2)) 
5

box(bty='L') Versuchen nur die linken und unteren Teile der Box zu ziehen. Sie können die Linien auch selbst zeichnen, indem Sie lines, segments oder abline verwenden und die Funktionen grconvertX und grconvertY verwenden, um die Positionen zu finden, an denen die Linien gezeichnet werden sollen.

+1

Perfect, 'bty = "L"' auf 'Grundstück vorbei()' für mich gearbeitet. – thomasfedb

1

Ich schlage vor, dass Sie die Prozedur Sie skizzierte folgen und dann:

box(which = "plot", bty = "l")

zB:

plot.new() 
plot.window(xlim = c(1, 18), ylim = c(2, 20)) 
points(1:18, 2:19, pch = 1, col = "#FF7F24", cex = 1.2) 
lines(1:18, 2:19, col = "#FF7F24", lwd = 2) 
axis(side  = 1, 
    lwd  = 0, 
    lwd.ticks = 1, 
    at  = 1:18, 
    cex.axis = 0.9) 
title(main = "Plot", 
     ylab = "Y-Axis") 
legend("top", 
     legend = c("Legend"), 
     col = c("#FF7F24"), 
     text.col = c("#FF7F24"), 
     pch = 1, 
     bty = "n", 
     cex = 1.2) 
axis(side  = 2, 
    lwd  = 0, 
    lwd.ticks = 1) 
box(which = "plot", bty = "l") 

Sie sollten die Optionen lwd = 0 und lwd.ticks = 1 zu Ihrem separaten axis() Anrufe passieren, um um zu verhindern, dass Teile Ihrer Achsen fetter erscheinen als andere Teile Ihrer Achse, weil einige von Ihrem Aufruf an box() überlagert werden und einige tun n ot.

Die Lösung von box() am Ende verwendet, ist, glaube ich, allgemeinere, dass können Sie es verwenden, wenn z.B. Sie können bty = "l" in Ihrem plot.default oder plot.window Aufruf nicht übergeben oder nicht.