16

trying to replicate the example here;

http://onertipaday.blogspot.com/2011/07/word-cloud-in-r.html

Need help figuring out how to increase the plotted area of the word cloud. Changing the height and width parmeters in png("wordcloud_packages.png", width=1280,height=800) only changes the height and width of the canvas..but the plotted area remains small.

require(XML)
require(tm)
require(wordcloud)
require(RColorBrewer)
u = "http://cran.r-project.org/web/packages/available_packages_by_date.html"
t = readHTMLTable(u)[[1]]
ap.corpus <- Corpus(DataframeSource(data.frame(as.character(t[,3]))))
ap.corpus <- tm_map(ap.corpus, removePunctuation)
ap.corpus <- tm_map(ap.corpus, tolower)
ap.corpus <- tm_map(ap.corpus, function(x) removeWords(x, stopwords("english")))
ap.tdm <- TermDocumentMatrix(ap.corpus)
ap.m <- as.matrix(ap.tdm)
ap.v <- sort(rowSums(ap.m),decreasing=TRUE)
ap.d <- data.frame(word = names(ap.v),freq=ap.v)
table(ap.d$freq)
pal2 <- brewer.pal(8,"Dark2")
png("wordcloud_packages.png", width=1280,height=800)
wordcloud(ap.d$word,ap.d$freq, scale=c(8,.2),min.freq=3,
max.words=Inf, random.order=FALSE, rot.per=.15, colors=pal2)
dev.off()
sgt pepper
  • 267
  • 2
  • 4
  • 9

2 Answers2

21

Try using the res parameter, instead:

...
png("wordcloud_packages.png", width=12,height=8, units='in', res=300)
...

enter image description here

John Colby
  • 22,169
  • 4
  • 57
  • 69
  • this is helpful..thanks. I will update this question if I find a better answer. – sgt pepper Feb 12 '12 at 05:51
  • thanks for the tip. just wondering if you've come across an issue where the text size doesn't scale with the word frequency? running the examples on my system, the words are all the same size. could be an issue with system fonts. tia. – Paul Rigor Aug 07 '13 at 08:53
  • nvm, indeed, it was an issue with system fonts! in any case, here's a good how-to on installing additional fonts: http://blog.revolutionanalytics.com/2012/09/how-to-use-your-favorite-fonts-in-r-charts.html – Paul Rigor Aug 07 '13 at 09:01
2

If you include par(mar = rep(0, 4)) as a separate line immediately after the call to png you'll remove the margins, and the wordcloud will use all the available space. With this, and possibly tweaking the res parameter as suggested in the previous answer, you should get what you wanted.

giocomai
  • 3,043
  • 21
  • 24