Ask A Cartographer

Symbology: Simultaneously Coloring and Sizing Points

May 15 2008 | 1 comment
Categories: Symbology

I need to color points using a text field and size those points using a number field. In other words, the two symbology functions I need to combine are: symbolizing by categories-unique values (for the point's color) and symbolizing by quantities-graduated symbols (for the point's size).

The best solution I can come up with is symbolizing using multiple attributes. In this case, I colored my points by inputting a text variable in "Value Field" and sized my points by clicking on the "symbol size" button for each of my color categories (I use the same scale for each). I sized the points with three classifications (say, small, medium and large). This solution does not give me the desired result for the following reasons:

1. The legend shows the thee point sizes for each of my color categories, which is unacceptable.
2. I prefer proportional points, rather than classifications.
3. It was too tedious to create the sized symbol classifications for each of the color categories.

Please help me solve this problem - Thank you!!

Mapping Center Answer:

You're unfortunately at the limits of the software as its designed.  One strategy I've used to handle this problem is to make the graduated symbol portion of the symbology use a large number of classes--effectively mimicking proportional symbols.  That will leave you with a rather unwieldy layer in your table of contents, and a legend that  leaves something to be desired.

First, though, I would symbolize the layer using proportional symbols--just to determine the min and max size.  Use that size range for the graduated display in the bivariate symbology.

Then since the map could potentially be okay, you would just need to know the fastest way to make a decent legend.  I would make another layer and put it in a dummy data frame, i.e., a dataframe that is off the layout page. Then make just a graduated symbol display for that layer, setting those same sizes you used in the bivariate symbology--then set as many classes as you desire.  Insert a legend for that layer on the layout, you can use it as is, or you can convert that to graphics to better arrange the circles. 

The unique values side of this layer actually presents a greater challenge in that a dummy layer (also necessary in this case) will be difficult because you will need to manually match the colors to the bivariate display.  I'll assume Murphy's law is in play and that you've got lots of unique values, as such, it will be better to use a combination of the dummy unique values legend (to provide the legend text) and the long unwieldy bivariate legend.  Convert both to graphics (ungroup both until no groups exist) .  The simple unique values legend (from the layer in the dummy data frame) will supply the text and the unwieldy bivariate legend from your map will supply the circles (you only need one circle from each), however, is up to you to delete the extra symbols and to align the others to the text.

Sorry, there's no easier way that I can think of to solve this.

Better Solution posted by ROBERT MORRIS on May 21 2008 2:26PM
As the author of this question, I have been experimenting with several other solutions. The best one I was able to come up with involves using pie chart symbology.

So that I can better explain my solution, here is a simplified example. Say you want to plot the branches of two banks (Say Bank A and Bank B). All branches of Bank A should be red and all branches of Bank B are blue. Additionally, you need to size the branches by the dollar value of deposits. So far our data set has the following variables: FID, COMPANY, DEPOSITS.

To obtain the desired symbology, first add two "dummy variables" to my data: BANK_A, BANK_B. Field "BANK_A" contains the deposits for Bank A and zeros for Bank B. Field "BANK_B" contains the deposits for Bank B and zeros for Bank A. Assuming the data is geocoded, symbolize the data with pie charts. Then, select fields "BANK_A" and "BANK_B", which will determine the color of the pie pieces. Since any given branch has only one number in either of these two fields, each pie chart will a solid color. In other words, 100% of the deposits are in one bank or the other.

To size the points, simply click on the "Size" button and vary the size using the sum of the field values. So you are effectively sizing by the deposits at a particular branch. It is that simple.

Now the legend is a different story. In the legend, I can only get one pie chart to display as a size reference. Optimally, I would be able to choose how many reference points show on the legend, as is possible with proportional symbols. To get around this issue, I create a "dummy" layer of the same data. Only this time, I symbolized the branches using proportional symbols. But even if you do this, you run into another roadblock - the minimum value of the pie charts does not necessarily equal the minimum value of the proportional symbols, even if they are the same point size. The proportional symbols are smaller than the pie charts for some reason. Don't ask me why - a follow up with a cartographer would maybe help clear this up!! So to get around this issue, I simply increased the minimum size of minimum proportional symbol, which brought them into proportion with the pie charts. Now, after some manual formatting the legend is finally acceptable.

I should get an award for this!!!

If you would like to post a comment, please login.

Contact Us | Legal | Privacy |