This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

Protovis Loader


Protovis Loader is a plugin which faciliates the use of Protovis scripts. Protovis is a javascript data visualisation library being developed at Stanford, which allows the creation of interactive charts on web pages.

Incorporating Javascript code into WordPress posts can be tricky as it (deliberately) sanitises text typed into posts, which interferes with Javascript. When I first began experimenting with Javascript, this cause me some difficulties, as described in this post. In the end, I decided to roll up my sleeves and write a plugin to make the whole process a lot easier. Protovis Loader was the result.

Protovis Loader makes the whole process a lot easier in two ways:

  1. It ships with a copy of the Protovis javascript library and once the plugin is activated, links to the library will automatically be included in page headers.
  2. It creates a shortcode called [pvis] which makes it very easy to include Protovis scripts in blog posts and pages.


Simply use the [pvis] shortcode in your posts and pages where you want to include a Protovis chart. There are a number of optional parameters:

  • type: ‘chart’ (default) displays a chart in a box with an optional caption, ‘inline’ has no box (e.g. useful for sparklines)
  • src: path to a Protovis (javascript) code file
  • height: height of canvas box for the chart
  • width: width of canvas box for the chart
  • img: path to a fallback image to use when scripts are blocked or the browser does not support Protovis
  • alt: alt text for the fallback image
  • caption: image caption

If any content is supplied between the opening [pvis] tag and the closing [/pvis] tag, it is taken to be javascript for inclusion. It may also be interpreted as a caption, but only if a caption field is not supplied and a src field is supplied.

Here is an example of use of the tag:

[pvis src=”” img=”fails.png” height=”125px”]My Caption![/pvis]

You can see the plugin in action on the Stubborn Mule.

To-Do List

This list is not really prioritised yet.

  1. Improve user-agent (browser) detection
  2. Create an options page
  3. Allow custom CSS files
  4. Allow for alterntive specification of the protovis js library
  5. Replace tags in the imported script to allow shortcode parameters to be used in the script

I’m sure there’ll be a lot more!



  1. Upload ‘pv-loader’ to the ‘/wp-content/plugins/’ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Use the [pvis] shortcode to add protovis code to your post (see Screenshots for an example)


What is the syntax of the pvis shortcode?

Here is an example:

[pvis src="/scripts/chart.js" img="/images/fail.png"]A caption[/pvis]


  • src: specifies the location of the protovis script
  • img: specifes the URL of an image to display instead if scripts are blocked
  • alt: speficies image alternative text

Text between the tags will be set as a caption

Can I specifiy any CSS?

Not yet.

Which Protovis library does the plugin use?

Currently version Protovis 3.2 ships with the plugin.

Can I use a different version of Protovis?

Not yet.


There are no reviews for this plugin.

Contributors & Developers

“Protovis Loader” is open source software. The following people have contributed to this plugin.


Translate “Protovis Loader” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Tweaked CSS for caption to improve vertical alignment
  • Added optional height/width dimension parameters for chart canvas
  • Added optional “inline” chart type (no caption no borders)


  • Fixed error: missing > in css div element


  • Added CSS (fixed style at this point)
  • Added BlackBerry to the list of non-SVG browsers


A variety of very minor tweaks, mainly adhereing to WP coding standards.


  • The first release of the plugin.