This article describes how to create a map with bar charts and a legend.
Map layer with areas
Map layer with data
As an example, a vector map of the Dutch provinces is used. On top of this a layer is placed from a csv file. It contains the x and y coordinates of the centroids and the number of inhabitants by province, divided into three age groups.
This technique is not suitable if a lot of areas are to be displayed. The map would become very cluttered. Another limitation is that bar width is not adjustable.
Make sure the required layers have been opened and are fully visible.
Displaying bar charts
Select the properties of the layer with the data (right mouse button) and go to the tab ‘Overlay’. Put a check mark before ‘Display diagrams’ and select ‘Bar chart’ as chart type. Now, the attributes can be added one at a time. In this case, the population numbers per age group. Select an attribute, click ‘Add’, and repeat this for the other attributes.
Now you must specify the bar height. Usually, the attribute with the highest maximum value at the regional level will be used to determine the maximum bar height. Unfortunately, that will go wrong if this attribute is zero in one or more regions. Click ‘Find maximum value’ to determine the maximum value for the selected attribute and set the maximum bar height (‘Size’). In the current stable version of QGIS (1.7.4) it has no effect to select ‘Map units’ as size unit in stead of millimeters. Click ‘Apply’ to see the effect of the settings on the map. If necessary, move the dialog somewhat to the left, in order to see the map. Write down the settings for maximum value and maximum bar height. You will need this information later, if you create a legend. If the result is what you want, click ‘OK’ to exit the dialog box.
You can also enter the maximum value manually. For the readability of the legend it is better to use a rounded number.
Sometimes you also need to make the points symbols 100 percent transparent (on the ‘Style’ tab). Otherwise, point symbols will appear in areas with very low values for the selected attributes.
Currently, QGIS has no option to automatically create a legend for a map with bar, pie or circle charts. For this I wrote the program LegendSVG, to be downloaded on this site. Unzip the file somewhere on your computer and double click LegendSVG.exe.
With this program, a map legend in SVG format can be made. The legend can be added to the map in the Print Composer. LegendSVG uses points a measuring unit. One point is 1/72 inch and one inch is 2.54 cm. Dimensions in millimeters (S) can be converted to points with the formula: 72 x S / 25.4.
First, select the chart type (‘Bar chart’). The bar height and the corresponding maximum value that you wrote down, can be filled in at ‘Object size’ and ‘Maximal value’. At ‘Categories’, set the number of bars to 3. Because the bars have a fixed width of 5 mm in QGIS, you don’t have to change ‘Bar width’. Now you can customize all text that will appear in the legend. For the different ways to set the colors I refer to the help text of the program. Legend height is calculated automatically, based on the data you have entered. This is not (yet) done with legend width. If the settings are complete, click on the ‘Build SVG code’ button. Several lines of code will appear. A SVG file is basically a text file. Now save the results with the ‘Save to file’ button. Choose a filename. The file extension should remain ‘svg’. With the ‘Show measures’ button you can see what the dimensions in millimeters have become. Write these dimensions down, because you will need them later in QGIS.
Before you combine the legend with the map in QGIS, you can inspect the result with Inkscape. With this program you can modify the legend, if you wish. You could also choose to finish the entire map with Inkscape, or some other graphical program. However, this will not explained further.
Open a new Print Composer (“Print layouter”) from the ‘File’ menu. Make sure the map is displayed and add a title. The legend can now be added with the ‘Add image’ button. You can also use the ‘Layout’ menu. Now click on the spot where the legend should appear. A white rectangle appears. Select this rectangle and in the right panel on the ‘Item’ tab enter the right size (unfortunately, QGIS unfortunately does not do this automatically). Then open the legend file using the button with the three dots next to the ‘Load’ box. If all went well the legend will appear.
Now it may seem as if something went wrong. In the current stable version of QGIS (1.7.4) the appearance of the bars in the Print Composer differs from the appearance on the map canvas. After you save the map with ‘Export as image’ or ‘Export as SVG’, the size of the bar charts on the map will match the size on the legend again.
You can also save your map in PDF format, but currently the menu option ‘Export as PDF’ does not work well with bar charts. You can solve this by printing to a virtual printer such as PDF Creator.