2016-07-22 9 views
0

Es ist möglich, die Schriftgröße in einem Plot mit dem Likert-Paket in R zu ändern, indem die ggplot-Befehle "theme" hinzugefügt werden. Wenn jedoch ein Balkendiagramm und ein Histogramm gleichzeitig zusammen aufgezeichnet werden, haben diese Änderungen keinen Einfluss auf die resultierenden Grafiken. Gibt es eine Möglichkeit, die Schriftgröße zu ändern und trotzdem gleichzeitig das Balkendiagramm und das Histogramm darzustellen? Zum Beispiel wird der folgende Code erfolgreich die Achse Text ändern:Likert-Paket R

likert.bar.plot(items, legend.position = "none") + 
theme(text = element_text(size = rel(6), colour = "red"), 
     axis.text.y = element_text(colour = "blue", 
            family = "Courier"))` 

... aber der folgende Code nicht:

plot(items, include.histogram=T, legend.position = "none") + 
theme(text = element_text(size = rel(6), colour = "red"), 
     axis.text.y = element_text(colour = "blue", 
            family = "Courier"))` 

Diese Frage, die Grundlagen der How do I change the text font, size and colour of all the different texts in the R package, Likert?

Antwort

1

Das erklärt Problem ist, dass plot.likert die grid pacakge verwendet, um die Plots zu kombinieren. Dies bedeutet, dass es kein Objekt zurückgibt, das geändert werden kann (versuchen Sie es selbst, speichern Sie die Ausgabe - es gibt NULL zurück). Wenn nur ein Plot gedruckt wird, wird jedoch das Plot mit der Klasse ggplot (unter anderem) zurückgegeben, wodurch es von und anderen ggplot Funktionen manipuliert werden kann. Wenn Sie möchten, dass dies in einem einzigen Funktionsaufruf funktioniert, müssen Sie wahrscheinlich den Code für plot.likert selbst bearbeiten. Alternativ und wahrscheinlich robuster/flexibler: Vielleicht möchten Sie selbst in das grid-Paket schauen, um die Plots zu kombinieren.

Eg ,:

data(pisaitems) 
items29 <- pisaitems[,substr(names(pisaitems), 1,5) == 'ST25Q'] 
names(items29) <- c("Magazines", "Comic books", "Fiction", 
        "Non-fiction books", "Newspapers") 
l29 <- likert(items29) 



a <- 
    likert.bar.plot(l29, legend.position = "none") + 
    theme(text = element_text(size = rel(6), colour = "red"), 
     axis.text.y = element_text(colour = "blue", 
            family = "Courier")) 

b <- 
    likert.histogram.plot(l29, legend.position = "none") + 
    theme(text = element_text(size = rel(6), colour = "red"), 
     axis.text.y = element_text(colour = "blue", 
            family = "Courier")) + 
    theme(axis.text.y = element_blank()) 


library(gridExtra) 
grid.arrange(a,b,widths=c(2,1)) 

(Beachten Sie die Aufnahme eines MWE, damit andere den Code laufen.)

(Danke @ eipi10 für den Reiniger Code, sie zu kombinieren)

enter image description here

+0

Sie könnten das Layout mit dem 'gridExtra' Paket machen, was die Dinge etwas einfacher macht:' library (gridExtra); grid.arrange (a, b, Breiten = c (2,1)) '. – eipi10