Linlin Yan posted a cool (hot?) simulation of burning fire with R in the COS forum yesterday, which was indeed a warm welcome. I’m not sure whether our forum members will be scared by the “fire” under the title “Welcome to COS Forum”.
The fire was mainly created by the function image() with carefully designed rows and columns in heated colors heat.colors(). Here is one of the pictures generated from his code:
Tag cloud is a bunch of words drawn in a graph with their sizes proportional to their frequency; it’s widely used in blogs to visualize tags. We can observe important words quickly from a tag cloud, as they often appear in large fontsize. Tony N. Brown asked how to “graphically represent frequency of words in a speech” the other day in R-help list, which is actually a problem about the tag cloud:
I recently saw a graph on television that displayed selected words/phrases in a speech scaled in size according to their frequency. So words/phrases that were often used appeared large and words that were rarely used appeared small. [...]
Marc Schwartz mentioned that Gorjanc Gregor has done some work years ago using R (in grid graphics). The obstacle of creating tag cloud in R, as Gorjanc wrote, lies in deciding the placement of words, and it would be much easier for other applications such as browsers to arrange the texts. That’s true — there have already been a lot of mature programs to deal with tag cloud. One of them is the wp-cumulus plugin for WordPress, which makes use of a Flash object to generate the tag cloud, and it has fantastic 3D rotation effect of the cloud.
1. Arranging text labels with pointLabel()
Before introducing how to port the plugin into R, I’d like to introduce an R function pointLabel() in maptools package and it can partially solve the problem of arranging text labels in a plot (using simulated annealing or genetic algorithm). Here is a simulated example:
Currently I haven’t found a good plugin to insert Google Adsense code into the bbPress forum (for the plugin adsense-for-bbpress, I don’t like the idea of posting Adsense code as if it were a post), so I opened the template file post.php and manually inserted the code as:
<div class="threadpost">
<div class="post">
<?php
if ($bb_alt['post'] == '0' || (is_int($bb_alt['post']/2)) && rand(0, 20) == 10) {
?>
<span style="float:right;padding-left:1em;">
<script type="text/javascript"><!--
google_ad_client = "pub-2679974521646557";
/* 200x200 @ EN */
google_ad_slot = "0041982581";
google_ad_width = 200;
google_ad_height = 200;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></span>
<?php } ?>
<?php post_text(); ?>
</div>
<div class="poststuff"><?php printf( __('Posted %s ago'), bb_get_post_time() ); ?>
<a href="<?php post_anchor_link(); ?>">#</a> <?php post_ip_link(); ?>
<?php post_edit_link(); ?> <?php post_delete_link(); ?></div>
</div>
The variable $bb_alt['post'] has recorded the order of a post as 1, 2, …, n. My code above makes sure that the adsense code will appear
- in the top post with probability 100%; (guaranteed by
$bb_alt['post'] == '0') - randomly in those posts of even-order (
is_int($bb_alt['post']/2)) with probability 1/21≈5% (rand(0, 20) == 10), but this probability depends on the RNG in PHP;
To a statistician, the only thing that is not random is “everything is random”.


Recent Comments