2016-03-23 9 views
1

Ich erstelle ein Diagramm, in dem die x-Achse Zeichenfolgen enthält. Ich folgte den Anweisungen von diesem posting und erfolgreich erstellt die folgende Handlung:Achsenbeschriftungsraum für Zeichenfolgenbeschriftungswerte vergrößern

myDf <- cbind(Row.Names=rownames(mtcars), mtcars) 
plot(myDf$mpg, axes=F, xlab="Car", ylab="MPG") 
axis(2) 
axis(1, at=seq_along(myDf$mpg), labels=myDf$Row.Names, las=2, cex.axis=0.70) 
box() 

enter image description here

Nun ist das Problem, dass die Achse sehr eng ist. Wie vergrößert man den vertikalen Abstand zwischen der x-Achse und dem unteren Rand des Plotbildes? Idealerweise würden sich die x-Achsenwerte nicht mit der x-Achsenbeschriftung überschneiden ("Car" in diesem Beispiel).

Antwort

2

Wir müssen unten breitere Ränder setzen. Verwenden Sie dann mtext(), um die X-Achsenbeschriftung hinzuzufügen.

# set the margins 
par(mar = c(10, 4.1, 4.1, 2.1)) 

plot(myDf$mpg, axes=F, xlab="", ylab="MPG") 
axis(2) 
axis(1, at = seq_along(myDf$mpg), labels = myDf$Row.Names, las = 2, cex.axis = 0.70) 
box() 

# add xlabel, "line" arguement controls vertical position 
mtext("Car", side = 1, line = 6) 

enter image description here

Mit ggplot:

library(ggplot2) 
#my data 
myDf <- cbind(car = rownames(mtcars), mtcars) 
#to keep ordering as in data, set custom levels (default is alphabetical) 
myDf$car <- factor(myDf$car, levels = myDf$car) 

#plot 
ggplot(myDf, aes(x = car, y = mpg)) + 
    geom_point() + 
    # rotate car names by 90 degrees, adjust vertically and horizontally 
    theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) 

enter image description here

+1

Danke. Gibt es eine Möglichkeit, die Ränder (und das Argument "Linie") programmatisch statt durch Versuch und Irrtum zu bestimmen? – stackoverflowuser2010

+0

@ stackoverflowuser2010 Ich kann es nicht sagen. Warum nicht ggplot verwenden? – zx8754

+0

Weil ich ggplot noch nicht gelernt habe? :) – stackoverflowuser2010