2013-03-05 14 views
11

Mam trochę działającego kodu R, który generuje chmurę znaczników z macierzy term-document.R: dodaj tytuł do grafiki w stylu word/png

Teraz chcę utworzyć całą masę chmur znaczników z wielu dokumentów i obejrzeć je wizualnie później. Aby dowiedzieć się, który dokument (y)/corpus, do którego należy chmura tagów, chciałbym dodać tytuł do wygenerowanej grafiki. Jak mogę to zrobić?

Może to oczywiste, ale wciąż jestem początkującym grafikiem R.

Mój własny korpus jest zbyt duże, aby je tu wymieniać, ale kod z tym SO pytanie (w połączeniu z postaci kodu Zaakceptowanych odpowiedź od SO użytkownik Andrie można stosować: Spaces in wordcloud chcę dodać niestandardowy tytuł i niektóre bardziej niestandardowy tekst do obrazu jak this

Odpowiedz

14

funkcją wordcloud() wypełnia całą działkę. Oznacza to, że przed rozpoczęciem drukowania musisz zarezerwować miejsce na swoje urządzenie graficzne na tytuł.

Od wordcloud korzystaj z podstawowych zasad, możesz to zrobić z par(mfrow=...) lub layout(). Następnie utwórz tytuł fabuły, używając text().

I ilustrują layout(), dostosowując przykład w ?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") 

Generuje:

enter image description here

4

Jednym z pomysłów jest, aby importować obrazy i zapisywać je ponownie stosując grid.raster i dodaj Tytuł korzystając grid.text. na przykład:

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

To niezły pomysł, być może będę to wykorzystać, aby dodać dodatkowe informacje później PNG. Ale nie jest to dokładnie to, czego chciałem - wstaw tytuł w czasie generacji wordcloud. – knb

+1

@knd Myślę, że tytuł twojego pytania (png) prowadzi mnie do błędu. Andrie daje ci właściwą odpowiedź. Ta odpowiedź jest jak adnotacja fabuły. – agstudy