2017-02-05 16 views
4

Я оценил токены в своих текстах в соответствии с таким критерием, и все они имеют значение. Мой список выглядит следующим образом:Wordcloud в R из списка значений (не из текстовых документов)

value,token 
3,tok1 
2.84123,tok2 
1.5,tok3 
1.5,tok4 
1.01,tok5 
0.9,tok6 
0.9,tok7 
0.9,tok8 
0.81,tok9 
0.73,tok10 
0.72,tok11 
0.65,tok12 
0.65,tok13 
0.6451231,tok14 
0.6,tok15 
0.5,tok16 
0.4,tok17 
0.3001,tok18 
0.3,tok19 
0.2,tok20 
0.2,tok21 
0.1,tok22 
0.05,tok23 
0.04123,tok24 
0.03,tok25 
0.02,tok26 
0.01,tok27 
0.01,tok28 
0.01,tok29 
0.007,tok30 

тогда я пытаюсь произвести Wordcloud со следующим кодом:

library(tm) 
library(wordcloud) 

tokList = read.table("tokens.txt", header = TRUE, sep = ',') 

# Create corpus 
corp <- Corpus(DataframeSource(tokList)) 
corpPTD <- tm_map(corp, PlainTextDocument) 

wordcloud(corpPTD, max.words = 50, random.order=FALSE) 

Который производит:

enter image description here

Но это не то, что я хотеть. Я хотел бы wordcloud, где я визуализую токены (так «tok1», «tok2», ...) в соответствии со значением, которое находится в таблице. Поэтому, если у первого токена есть 3, я хочу, чтобы это слово было в три раза больше, чем следующий элемент в списке.

Может ли кто-нибудь помочь?

+0

Это возвращает ошибку. 'corpPTD' - это, я думаю, 30-мерный вектор. –

+0

Фантастический, это решает! –

ответ

1

Просто это будет работать (при условии, что минимальная величина не равна нулю, если то нуль отфильтровывать соответствующие маркеры):

library(RColorBrewer) 
wordcloud(tokList$token, tokList$value/min(tokList$value), max.words = 50, min.freq = 1, 
        random.order=FALSE, colors=brewer.pal(6,"Dark2"), random.color=TRUE) 

enter image description here