2013-03-05 56 views
11

我有一些工作R代碼可以從術語文檔矩陣生成標籤雲。R:將標題添加到wordcloud圖形/ PNG

現在我想從許多文檔創建一大堆標籤雲,並在以後視覺檢查它們。 要知道標籤雲圖片屬於哪個文檔/語料庫,我想爲所生成的圖形添加一個標題。我怎麼做?

也許這是顯而易見的,但我仍然是一個R圖形的初學者。

我自己的語料庫是太大,在這裏列出來,但是從這個SO問題的代碼(以代碼形式從接受的答案SO用戶Andrie可以用來組合: Spaces in wordcloud 我想添加自定義標題和一些更多的自定義文本到圖像像this

回答

14

wordcloud()功能填滿整個情節。這意味着在繪圖之前您需要在圖形設備上爲標題保留空間。

由於wordcloud利用基本圖形,您可以使用par(mfrow=...)layout()來完成此操作。然後用text()創建劇情標題。

我說明與layout(),適應在?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") 

這產生:

enter image description here

4

一個想法是要導入的圖像,並使用grid.raster再次保存,並添加使用grid.text的titile例如:

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

這是一個不錯的主意,也許我會用這額外的信息添加到之後的PNG。但它不完全是我想要的 - 在wordcloud一代時插入一個標題。 – knb 2013-03-05 15:32:02

+1

@knd我認爲你的問題的標題(png)會導致我錯誤。安德里給你正確的答案。這個答案就像情節的註解一樣。 – agstudy 2013-03-05 15:44:51