2016-11-25 4 views
0

Ich möchte eine Wortwolke für folgende Daten erstellen.Erstellen Sie alphabetisch sortierte Wortwolke

Red  30 
Brown 12 
Black 16 
Green 33 
Yellow 18 
Grey 19 
White 11 

Mein Wortwolke sollte wie folgt aussehen:

enter image description here

In dem Worte sind alphabetisch sortiert und die Schrift der Wörter entsprechend den Werten der zweiten Spalte entspricht.

+1

haben einen Blick auf 'order' und http://stackoverflow.com/questions/1296646/how-to-sort-a-Datenrahmen-by-Spalten # Antwort-1296745 – Rentrop

+0

@ Floo0 Ich möchte keine Spalte bestellen. Ich möchte eine Wortwolke erstellen, die alphabetisch sortiert ist. Soweit ich weiß, erstellt wordcloud() in R zufällig eine Wordcloud. Wenn random.order auf false gesetzt ist, wird die Wortwolke in abnehmender Häufigkeit (nicht alphabetisch) dargestellt. – jaikamal

Antwort

2

Wir jedes Wort in Buchstaben trennen kann dann Größe zuweisen pro jedem Buchstaben und Grundstück mit ggplot2::geom_text:

library(ggplot2) # ggplot2_2.2.0 

# data 
df1 <- read.table(text =" 
Red  30 
Brown 12 
Black 16 
Green 33 
Yellow 18 
Grey 19 
White 11", stringsAsFactors = FALSE) 

colnames(df1) <- c("col", "size") 
# order based on value of size 
df1 <- df1[order(df1$col), ] 

# separate into letters add size 
datPlot <- 
    do.call(rbind, 
    lapply(seq(nrow(df1)), function(i){ 
    myLetter <- c(".", unlist(strsplit(df1$col[i], split = ""))) 
    data.frame(myLetter = myLetter, 
       size = c(10, rep(df1$size[i], length(myLetter) - 1))) 
    })) 
# each letter gets a sequential number on x axis, y is fixed to 1 
datPlot$x <- seq(nrow(datPlot)) 
datPlot$y <- 1 

# plot text 
ggplot(datPlot, aes(x, y, label = myLetter, size = size/3)) + 
    geom_text(col = "#F89443") + 
    scale_size_identity() + 
    theme_void() 

enter image description here

+1

Sieht gut aus für mich. – BrodieG

Verwandte Themen