A simple grob for the word cloud
Usage
word_cloud_grob(
text,
fontsize,
line_space = unit(4, "pt"),
word_space = unit(4, "pt"),
max_width = unit(80, "mm"),
col = function(fs) circlize::rand_color(length(fs), luminosity = "dark"),
add_new_line = FALSE,
test = FALSE
)
# S3 method for word_cloud
widthDetails(x)
# S3 method for word_cloud
heightDetails(x)
Arguments
- text
A vector of words.
- fontsize
The corresponding font size. With the frequency of the words known,
scale_fontsize
can be used to linearly interpolate frequencies to font sizes.- line_space
Space between lines. The value can be a
grid::unit
object or a numeric scalar which is measured in mm.- word_space
Space between words. The value can be a
grid::unit
object or a numeric scalar which is measured in mm.- max_width
The maximal width of the viewport to put the word cloud. The value can be a
grid::unit
object or a numeric scalar which is measured in mm. Note this might be larger than the final width of the returned grob object.- col
Colors for the words. The value can be a vector, in numeric or character, which should have the same length as
text
. Or it is a self-defined function that takes the font size vector as the only argument. The function should return a color vector. See Examples.- add_new_line
Whether to add new line after every word? If
TRUE
, each word will be in a separated line.- test
Internally used. It basically adds borders to the words and the viewport.
- x
The
word_cloud
grob returned byword_cloud_grob
.
Value
A grid::grob
object. The width and height of the grob can be get by grid::grobWidth
and grid::grobHeight
.
Examples
# very old R versions do not have strrep() function
if(!exists("strrep")) {
strrep = function(x, i) paste(rep(x, i), collapse = "")
}
words = sapply(1:30, function(x) strrep(sample(letters, 1), sample(3:10, 1)))
require(grid)
gb = word_cloud_grob(words, fontsize = runif(30, min = 5, max = 30),
max_width = 100)
grid.newpage(); grid.draw(gb)
# color as a single scalar
gb = word_cloud_grob(words, fontsize = runif(30, min = 5, max = 30),
max_width = 100, col = 1)
grid.newpage(); grid.draw(gb)
# color as a vector
gb = word_cloud_grob(words, fontsize = runif(30, min = 5, max = 30),
max_width = 100, col = 1:30)
grid.newpage(); grid.draw(gb)
# color as a function
require(circlize)
#> Loading required package: circlize
#> ========================================
#> circlize version 0.4.16
#> CRAN page: https://cran.r-project.org/package=circlize
#> Github page: https://github.com/jokergoo/circlize
#> Documentation: https://jokergoo.github.io/circlize_book/book/
#>
#> If you use it in published research, please cite:
#> Gu, Z. circlize implements and enhances circular visualization
#> in R. Bioinformatics 2014.
#>
#> This message can be suppressed by:
#> suppressPackageStartupMessages(library(circlize))
#> ========================================
col_fun = colorRamp2(c(5, 17, 30), c("blue", "black", "red"))
gb = word_cloud_grob(words, fontsize = runif(30, min = 5, max = 30),
max_width = 100, col = function(fs) col_fun(fs))
grid.newpage(); grid.draw(gb)