Ramprashanth
Ramprashanth

Reputation: 159

why is a wordcloud not generated in mathematica with this code?

data = EntityValue[CountryData[], {"Name", "Population"}];
WordCloud[data]

All I get is this:

WordCloud[{{"Afghanistan", Quantity[35623235, "People"]}, {"Albania", 
   Quantity[3248655, "People"]}, {"Algeria", 
   Quantity[37473690, "People"]}, {"American Samoa", 
   Quantity[54719, "People"]}, {"Andorra", 
   Quantity[85458, "People"]}, {"Angola", .....

And not any graphic

Upvotes: 1

Views: 177

Answers (1)

Jason B.
Jason B.

Reputation: 161

I was able to get a word cloud in version 10.0 by using Heike's code, but I had to remove the part concerning a custom distance function since it slows down this version unbelievably.

data = << "http://pastebin.com/raw/02YJ9Ntx";
range = {Min[data[[All, 2]]], Max[data[[All, 2]]]};
words = Style[#1, FontFamily -> "Times", FontWeight -> Bold, 
     FontColor -> 
      Hue[RandomReal[], RandomReal[{.5, 1}], RandomReal[{.5, 1}]], 
     FontSize -> Rescale[#2, range, {12, 70}]] & @@@ data;
wordsimg = 
  ImagePad[#, -3 - 
      BorderDimensions[#]] & /@ (Image[
       Graphics[Text[Framed[#, FrameMargins -> 2]]]] & /@ words);
wordsimgRot = 
  ImageRotate[#, RandomReal[2 Pi], Background -> White] & /@ wordsimg;
iteration2[img1_, w_] := 
 Module[{imdil, centre, diff, dimw, padding, padded1, minpos},
  dimw = ImageDimensions[w];
  padded1 = ImagePad[img1, {dimw[[1]] {1, 1}, dimw[[2]] {1, 1}}, 1];
  imdil = 
   Binarize[
    ImageCorrelate[Binarize[ColorNegate[padded1], 0.05], 
     Dilation[Binarize[ColorNegate[w], .05], 1]]];
  centre = ImageDimensions[padded1]/2;
  minpos = 
   Reverse@Nearest[Position[Reverse[ImageData[imdil]], 0], 
      Reverse[centre]][[1]];
  Sow[minpos - centre];
  diff = ImageDimensions[imdil] - dimw;
  padding[pos_] := Transpose[{#, diff - #} &@Round[pos - dimw/2]];
  ImagePad[#, (-Min[#] {1, 1}) & /@ BorderDimensions[#]] &@
   ImageMultiply[padded1, ImagePad[w, padding[minpos], 1]]]

Then you can get two different word clouds, with or without random rotations,

{Fold[iteration2, wordsimgRot[[1]], Rest@wordsimgRot],
 Fold[iteration2, wordsimg[[1]], Rest@wordsimg]}

enter image description here

These compare quite well with what you get in version 10.3 with WordCloud[data]

enter image description here

Upvotes: 1

Related Questions