English translation of Minard's classic chart of Napoleon's March
November 4th, 2006 by JTJ

Mike Stucka  today provided a rich set of links during a discussion of mapping on NICAR-L.  If you're interested in Minard's map/chart/info graphic of Napeoleon's march to Russia — and especially if you use it as a teaching tool — check out the links below.

Click here to see the SAS code (zoomed-in view)

Charles Minard is a famous map-creator from the late 1800's.
Perhaps his most famous map is the following showing
Napoleon's March on Moscow in 1812.

I looked at several other people's version of Minard's map
on the following webpage and devised an idea for my own
version, using SAS/Graph's "proc gmap".

I used longitude/latitude, troop number, and city data from the following webpage
in combination with the temperature data from the following translation of Minard's Map.

I'm somewhat "geographically challenged" when it comes to europe, especially
with the city names on the Minard map (and I'm probalby not alone?)
Therefore I decided to plot Napoleon's path on *modern* maps, with the
country names labeled. Also, I wanted to give a "50,000-mile" view of
the map, so people could see where this area was in relation to other
areas of europe (such as France).

* Here's my 50,000-mile map.
* Which drills-down to this Zoomed-in map.
* Here is the SAS code used to generate the maps.

Here are some details about how I created my map(s) in SAS/Graph...

For both of these maps, I used a combination of the sas maps.europe
and as the base map. I created custom/subsetted/clipped
versions of these maps using SAS' "proc gproject", and specifying
the latmax/latmin/longmax/longmin for the area I wanted in my map.

To get the blue ocean/sea water to appear only in the map area I use
an annotated rectangular polygon with corners at the exact same
long/lat coordinates as the corners of my map, and annotate it
'behind' the map. (If I had used "goptions cback=blue" that would
have filled the entire background of the page with blue, not just
the wanter area in the map.)

In the 50,000-mile map, I annotate country names at long/lat
positions of my choosing, and I annotate a dashed-line box around
the area that will be shown for the drilldown. In this dashed-box
area, I use annotate's "html" variable to encode a drilldown, so
that when you click inside this rectangle it drills-down to the
zoomed-in map. I also annotate a dot at the city locations (and
I annotate city labels in the zoomed-in map).

I use the same technique in both maps to show Napoleon's path.
I take the long/lat values, and use them as vertices for a line,
and connect the dots with line segments (using annotate move/draw
functions). The size/width of the line is calculated based on the
number of troops (ie, men) still alive during that leg of the trip.
One problem with this technique was that it produced big/jagged
gaps/transitions at the line vertices (especially where the lines
changed directions sharply). To smoothe this out, I annotated a
'pie' (filled circle) at each vertex, with the diameter of the
pie being the same as the width of the line. With this annotation
(as with most all of the lat/long-based annotation in this map)
I combine the annotation with the map, use "proc gproject" to do
the map projection, and then separate the annotate from the map
(this guarantees that things line up in the correct position).

On the zoomed-in map, notice that when you hover your mouse over the
city names, you see the city name (and additional info, if available)
for that city. If you click on the city names, that launches a
google search for information about that city (including the words
'Napoleon' and '1812' in the search).

When you hover your mouse over the vertex points of Napoleon's path,
you'll get a html charttip/flyover-text showing the number of troops
at that point during the march. At first I made these hotspots the
exact same size as the visual vertex dots, but the small ones were
too small -- therfore I annotate a larger dot 'behind' the map for
each vertex, and the charttip is based on the size of those 'invisible'
vertex points :)

Surprisingly the toughest part of the map was the temperature plot.
After trying a few different approaches, I decided to base the position
of the temperature dots and the axes & gridlines & labels all using
long/lat coordinates. The distance from the minimum gridline to the
maximum gridline is 1 degree of latitude (not to be confused with
degrees celcius or degrees farenheit! ;). And for the horizontal
positions, I use he position of the cities/battles corresponding to
the temperatures. I color the temperature dots an 'ice cold' light
blue, since they represent cold temperatures.

/* Written by Robert Allison ( */

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

»  Substance:WordPress   »  Style:Ahren Ahimsa