2013-03-05 7 views
11

Ich habe einige funktionierende R-Code, der eine Tag-Wolke aus einer Term-Dokument-Matrix generiert.R: Titel zu Wordcloud Grafiken hinzufügen/png

Jetzt möchte ich eine ganze Reihe von Tag Clouds aus vielen Dokumenten erstellen und sie zu einem späteren Zeitpunkt visuell überprüfen. Um zu wissen, zu welchem ​​Dokument/welchen Dokumenten das Tag-Cloud-Bild gehört, würde ich der generierten Grafik einen Titel hinzufügen. Wie mache ich das?

Vielleicht ist das offensichtlich, aber ich bin immer noch ein Anfänger mit R-Grafik.

Mein eigener Korpus ist zu groß, um es hier aufzulisten, aber der Code von dieser Frage SO (mit dem Codeform kombinierte die akzeptierte Antwort von SO Benutzer Andrie verwendet werden kann: Spaces in wordcloud Ich mag einen benutzerdefinierten Titel hinzuzufügen und einige weitere benutzerdefinierte Text zu einem Bild wie this

Antwort

14

die wordcloud() Funktion füllt die gesamte Handlung. Das bedeutet, dass Sie vor dem Plotten Platz auf Ihrem Grafikgerät für den Titel reservieren müssen.

Seit wordcloud Verwenden Sie Base-Grafiken, können Sie dies entweder mit par(mfrow=...) oder layout() tun. Erstellen Sie dann den Plottitel mit text().

ich illustrieren mit layout(), Anpassen des Beispiels in ?wordcloud:

library(tm) 
library(wordcloud) 

x <- "Many years ago the great British explorer George Mallory, who 
was to die on Mount Everest, was asked why did he want to climb 
it. He said, \"Because it is there.\" 

Well, space is there, and we're going to climb it, and the 
moon and the planets are there, and new hopes for knowledge 
and peace are there. And, therefore, as we set sail we ask 
God's blessing on the most hazardous and dangerous and greatest 
adventure on which man has ever embarked." 

layout(matrix(c(1, 2), nrow=2), heights=c(1, 4)) 
par(mar=rep(0, 4)) 
plot.new() 
text(x=0.5, y=0.5, "Title of my first plot") 
wordcloud(x, main="Title") 

Dies erzeugt:

enter image description here

4

eine Idee ist, die Bilder zu importieren und speichern wieder grid.raster verwenden, und fügen sie den titile grid.text mit. zum Beispiel:

ll <- list.files(patt='*.png') 
library(png) 
library(grid) 
imgs <- lapply(ll,function(x){ 
    img <- as.raster(readPNG(x)) 
    ## get the file name 
    x.name <- gsub('(.*).png','\\1',x) 
    ## new device for new image version 
    png(file =paste(x.name,'_modified','.png',sep='')) 
    grid.raster(img) 
    ## here I add title 
    grid.text(label = x.name,x=0.5,y=0.9,gp=gpar(cex=2)) 
    dev.off() 

}) 
+0

Dies ist eine nette Idee, vielleicht werde ich nutzen diese, um zusätzliche Informationen hinzufügen die PNGs danach. Aber es ist nicht genau das, was ich wollte - füge einen Titel zur Zeit der Wordcloud-Generation ein. – knb

+1

@knd Ich denke, dass der Titel deiner Frage (png) mich zum Fehler führt. Andrie gibt dir die richtige Antwort. Diese Antwort ist wie eine Annotation der Handlung. – agstudy