How to wrap text around a circle
April 21, 2009 10:16 PM   Subscribe

I'm giving a big presentation in a couple of weeks and it has to be impressive. I have a fabulous idea for a graphic, inspired by the facebook friend wheel, where I want to wrap perhaps 100 words around a circle and draw lines to connect them in illustrative ways. The drawing lines part is easy, but the wrapping text around a circle part is hard (without doing it one element at a time, rotating and aligning each one just so). I *know* there's an easy way to do this, but am not quite smart enough to figure it out in omnigraffle or find another program that can do it. I can use Mac or PC. If you point me to a workable solution, you'll get your name in lights (if you wish) in addition to my unending gratitude.
posted by ezola to Computers & Internet (12 answers total) 2 users marked this as a favorite
 
You need Illustrator and its ability to align text on a Path, I would say. Then your problem will be adjusting the font size/spacing to make it fit the circle perfectly.
posted by AmbroseChapel at 10:51 PM on April 21, 2009


Best answer: I tried this out in Mathematica. Check out the resulting image. The Mathematica program I wrote is below. For printing you would export at a much higher resolution than 600 pixels. And I guess you have less than 139 words.
words = StringSplit[
   "I'm giving a big presentation in a couple of weeks and it has to \
be impressive. I have a fabulous idea for a graphic, inspired by the \
facebook friend wheel, where I want to wrap perhaps 100 words around \
a circle and draw lines to connect them in illustrative ways. The \
drawing lines part is easy, but the wrapping text around a circle \
part is hard (without doing it one element at a time, rotating and \
aligning each one just so). I *know* there's an easy way to do this, \
but am not quite smart enough to figure it out in omnigraffle or find \
another program that can do it. I can use Mac or PC. If you point me \
to a workable solution, you'll get your name in lights (if you wish) \
in addition to my unending gratitude."];

angles = 2 Pi Most[Rescale[Range[Length[words] + 1]]];

RadialWord[word_, angle_] := 
 Module[{x = Cos[angle], y = Sin[angle], 
   sign = If[Cos[angle] > 0, 1, -1]}, 
  Rotate[Text[
    word, {sign, 0}, {If[x > 0, Left, Right], Center}], {{sign, 
     0}, {x, y}}]]

img = Graphics[{Blue, Circle[{0, 0}, 0.98], Black, 
   MapThread[RadialWord, {words, angles}]}, PlotRange -> 1.3, 
  ImageSize -> 600]

Export["wordsarounddisk.jpg", img]

posted by hAndrew at 11:33 PM on April 21, 2009 [3 favorites]


(I'm sorry this only helps if you have access to Mathematica.)
posted by hAndrew at 11:35 PM on April 21, 2009


You can download a trial version of Illustrator, & Inkscape is an open source analog.
posted by Pronoiac at 1:35 AM on April 22, 2009


I just busted out Inkscape & did this.
* Draw a circle.
* Select the circle, then "Path," "Obect to Path" from the menu.
* Enter some text.
* Select the circle & the text, then select "Text," "Put on Path" from the menu.
posted by Pronoiac at 1:55 AM on April 22, 2009 [1 favorite]


I'm not sure Inkscape can make the words normal to the circle in a super easy way. Pronoiac's directions make them tangent to the circle. If you are going to try Inkscape, I would recommend using it on a PC, as it can be a bit buggy on a mac.

Also, hAndrew, that Mathematica code rocks!
posted by bluefly at 5:40 AM on April 22, 2009


Are you sure that's the graphic you want to use for an important presentation? If you are projecting that on a screen in a room, seeing the individual words & connections will be very difficult. I look at the facebook friend image, and while it looks kinda neat, I don't see any real insight from it.
posted by nyc_consultant at 5:55 AM on April 22, 2009


This thread very recently, brought Prezi to my attention, and I think that you could apply that tool to create an effect along the lines of what you're thinking of.
posted by idb at 6:15 AM on April 22, 2009


AmbroseChapel is correct, Illustrator is the ticket. It's totally easy. Create a circle, click and hold on the text tool and you'll see "Type on a Path Tool." Release, click somewhere on the path and type your text, it's that easy. Then adjust your font and play with your text. Illustrator is used on both Mac and PC. But as nyc_consultant said, it might seem right to you but not to others. Run it by someone, or a few peeps, to find out.
posted by davoid at 8:39 AM on April 22, 2009


Whoops, I didn't look at the image in the post. Let me see...
posted by Pronoiac at 12:45 PM on April 22, 2009


Something might be doable with tile clones, but I'm not finding it.
posted by Pronoiac at 1:20 PM on April 22, 2009


Best answer: Circos does this for comparing genomes but is flexible enough to map any cross-tabluar data set — try it online. It's a Perl program so it can run on the Mac.
posted by nicwolff at 10:18 AM on April 23, 2009 [1 favorite]


« Older Where are some cool places to live in inner-loop...   |   What goes on my wall? Newer »
This thread is closed to new comments.