ArcMAP Symbology

4134
17
Jump to solution
05-29-2017 12:55 PM
RyanPinguely
New Contributor II

Hello,

This is an ArcMAP 10.4.1 question. Is it possible to symbolize using one value field; then color and size that symbol using another field?  I am trying to display a set of surface geochem data.  I would like to choose a different symbol for each rock type then color and size that symbol depending on its gold value.  So far I am able to symbolize each rock type differently and size each symbol according to its gold value, but I am not able to choose different colors for the increasing gold values.  I am using the multiple attributes function in symbology.

Thanks

Ryan

17 Replies
XanderBakker
Esri Esteemed Contributor

Once I resolve some issues I'm experiencing with my license server I will mimic some data and see how far I get.

XanderBakker
Esri Esteemed Contributor

OK, so I think it will be possible, but it will require some manual configuration:

I generated a random dataset with this structure:

The SoilValueClass is a classification of the SoilValues into 5 classes.

I used two field as Value fields (Soil and SoilValueClass):

I manually assigned the colors, since applying the ramp will assign blue to "igneous, 1" and red to the end "Soil, 5" which is not what you want.  So I selected "igneous, 1", "metamorphic,1", etc up to "soil, 1" and assigned the blue color and for every "SoilValueClass" value a different color in the range of blue to red.

The Symbol Size was defined by the field SoilValues:

The legend is very, very, very long...

0 Kudos
RyanPinguely
New Contributor II

Nice work, how did you populate the "soilvalueclass" field? Is it possible to add a field and populate it in Arc or do I need to do that in an excel file?

0 Kudos
XanderBakker
Esri Esteemed Contributor

You can use the FieldCalculator (Making simple field calculations—Help | ArcGIS for Desktop ) to fill the new classified field:

In this example I am classifying the Field "!SoilValues!" into 5 classes and my maximum value is 100:

( !SoilValues! - 1) // (100 / 5) + 1

Please note that "Python" is selected as Parser.

If you can share the range of values you have, I can adapt the formula for you.

RyanPinguely
New Contributor II

That would be great.  The ranges I am using are visible in the image I posted earlier.

Thank you very much

0 Kudos
XanderBakker
Esri Esteemed Contributor

In case you are referring to these "Quantile" ranges:

... it would require a slightly different approach.

You could do this:

Select Python as Parser, activate the option "Show Codeblock"

Past the code below in the "Pre-Logic Script Code":

def Clfy(value):
    try:
        if value == 0:
            return 0
        elif value <= 14:
            return 1
        elif value <= 92:
            return 2
        else:
            return 3
    except:
        return -1

and enter the expression:

Clfy( !SoilValues! )

... where "SoilValues" should be replaced by the name of your field with unclassified values.

0 Kudos
RyanPinguely
New Contributor II

Well, congrats, you're hired!

Thank you very much for your persistence and ArcMAP skills.  Your help has been greatly appreciated.

Have a great day

0 Kudos
XanderBakker
Esri Esteemed Contributor

You're welcome! Could you mark the post that answered your question as the "Correct Answer"?

0 Kudos