2017-02-05 1 views
4

J'ai classé les jetons dans mes textes selon un critère et ils ont tous une valeur. Ma liste ressemble à ceci:Wordcloud dans R de la liste de valeurs (pas de documents texte)

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 

J'essaie ensuite de produire wordcloud avec le code suivant:

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) 

qui produit:

enter image description here

Mais ce n'est pas ce que je vouloir. Je voudrais un wordcloud, où je visualise les jetons (donc "tok1", "tok2", ...) en fonction de la valeur qui est dans la table. Donc, si le premier jeton a un 3 alors je veux que ce mot soit trois fois plus grand que l'élément suivant dans la liste.

Quelqu'un peut-être aider?

+0

qui renvoie une erreur. 'corpPTD' est - je pense - un vecteur 30 par 1 dimensionnel. –

+0

Fantastique, ça résout! –

Répondre

1

Simplement ceci travaillera également (en supposant que votre valeur minimale est de zéro, si zéro puis on filtre les jetons correspondants):

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