My map is crowded with pie chart symbols that overlap and obscure each other. Is there a way to draw these symbols so they don't overlap, perhaps drawing them not in their actual location but in a nearby empty space, with a line linking them to their actual location on the map? I need to print this map, so solutions that rely on a varying zoom level won't work. I'm using QGIS 2.18.16.
Custom placement of charts using data-defined position
Step 1: Add 2 columns to the attribute table, chart_x and chart_y
For a starting value, use the coordinates of each point.
Step 2: Use the new fields to control diagram position
Step 3: Use the Move Label and Diagram tool to move each chart
Find the Move Label and Diagram tool in the Label Toolbar
Editing must be enabled to use this tool. The attribute chart_x and chart_y values in the attribute table will be changed automatically when you move a diagram.
Alternative methods for step 3:
Use the coordinate capture tool to quickly find coordinates. Copy and paste the x and y values into the attribute table.
If you have several charts that you want to move by the same amount, select all the points for those charts, and batch edit them using the "updated selected" tool in the attribute table.
Step 4: Add a line to connect each diagram to its point
Under layer style, add a symbol layer and select geometry generator for the symbol layer type. Use this expression to draw a line between the original point and the diagram location.
make_line( make_point( $x, $y), make_point( "chart_x" , "chart_y" ))
Layer Properties > Diagrams > Appearance > Scale dependent visibility
). Which means you would have to zoom in close to see the pie charts which could avoid the overlap issue. – Joseph Mar 20 '18 at 11:08