2016-07-25 11 views
0

I haben Code die unten eingefügt PlotR: Suppress Zecken und Etiketten an den Endpunkten der Achse

x <- c(2, 3, 4) 
y <- c(2.5, 4.1, 5.5) 

plot(x, y, type = "o", xlim = c(1, 5), ylim = c(2, 6), axes = FALSE, bty = "n") 
axis(side = 1, at = seq(1, 5, 1)) 
axis(side = 2, at = seq(2, 6, 1), las = 2) 

The plot currently looks like this

produzieren würde Ich mag haben weder Zecken noch Etiketten an Position 1 und 5, aber die Achse sollte immer noch gezeichnet werden. Dies ist, was ich suche: The plot should look like this

Bei der Verwendung von labels = c("", 2, 3, 4, "") werden Ticks gezeichnet. Bei Verwendung von tick = FALSE bekomme ich keine Achse. Hat jemand dafür eine Lösung?

Antwort

2

Sie müssen nur die Linie manuell zeichnen. Mit Hilfe der Funktion line2user in this answer:

x <- c(2, 3, 4) 
y <- c(2.5, 4.1, 5.5) 

plot(x, y, type = "o", xlim = c(1, 5), ylim = c(2, 6), axes = FALSE, bty = "n") 
axis(side = 1, at = 2:4) 

lines(x = c(1, 5), y = rep(line2user(0, side = 1), 2), xpd = TRUE) 
axis(side = 2, at = seq(2, 6, 1), las = 2) 

enter image description here

Hinweis, die line2user Funktion gibt nur die Lage der Linien im Benutzerkoordinatensystem. Sie benötigen die xpd = TRUE, um außerhalb der Zeichenregion zu zeichnen.

+0

für mich gearbeitet, nachdem der Code zu 'Linien Ändern (x = c (1, 2), y = rep (line2user (0, Seite = 1), 2), XPD = TRUE)' und 'Linien (x = c (4, 5), y = rep (line2user (0, Seite = 1), 2), xpd = TRUE) '. Ansonsten wurden die Achsen doppelt gezeichnet (sah auf meinem Bildschirm hässlich aus :). – piptoma

+1

@pipomas Das ist wirklich unnötig - Sie können genauso einfach eine Linie von 1 bis 5 zeichnen. Sie sollten sich exakt überlappen. Aber ich bin froh, dass es für dich funktioniert hat. – dayne

+0

Sie haben Recht. Die Achse sieht gut aus, wenn das Plot als Bild oder PDF exportiert wird. – piptoma

Verwandte Themen