0

I'm developing a Python script to created several map document (.mxd) files from .shp file and .xlsx file automatically. After setting symbology of layer and changing labels, I want to hide heading of legend by working on "show heading" option on "Legend Item Properties", but unfortunately I cannot found this property. Here is part of my code:

def CreateMXD(srcMXDDir, srcMXDName, srcSHPDir, srcLyrDir, srcStyleName, srcXlsxWB):
 srcLayer = arcpy.mapping.Layer(srcLyrDir)
 mxd = arcpy.mapping.MapDocument(srcMXDDir + "//" + srcMXDName + '.mxd')
 mxdDF0 = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
 # mxdDF1 = arcpy.mapping.ListDataFrames(mxd2, "Layers")[1]
 mxdLayer = arcpy.mapping.Layer(srcSHPDir)
 arcpy.mapping.AddLayer(mxdDF0, mxdLayer, "TOP")
 addLayer = arcpy.mapping.ListLayers(mxd, "", mxdDF0)[0]
 fields = arcpy.ListFields(srcSHPDir)
 for field in fields:
 fieldType = field.type
 fieldName = field.name
 if fieldType in ["Double", "Integer", "Long"] and fieldName.startswith('edu'):
 arcpy.mapping.UpdateLayer(mxdDF0, addLayer, srcLayer, True)
 # print(addLayer.symbologyType)
 if addLayer.symbologyType == 'GRADUATED_COLORS':
 addLayer.symbology.valueField = fieldName
 labels = addLayer.symbology.classBreakLabels
 try:
 addLayer.symbology.classBreakLabels = ["{} - {}".format(*r)
 for r in [
 [round(float(f), 2) for f in lab.split(" - ")]
 for lab in labels
 ]
 ]
 except:
 print('Error in Symbology | %s' % fieldName)

This link has described this functionality in ArcMap but I want to do this change using ArcPy scripting. Below you can see the screen of my MXD file and mentioned option in ArcMap:

Arcmap show heading option

asked Dec 28, 2019 at 14:05
0

2 Answers 2

1

Using ArcGIS 10.4 (not Pro version), I did this by defining new style and then updating legend. So by double-click on labels in legend an going to Legend Properties > Style... > Properties... I could turn Show Heading option off. After applying changes, I named it df0_legend_style and saved it as a new style. Below image shows how we can create new style in ArcMap:

enter image description here

When I created the style, I added these codes to my script:

newStyle = arcpy.mapping.ListStyleItems("USER_STYLE", "Legend Items", df0_legend_style)[0]
mxd_legend = arcpy.mapping.ListLayoutElements(mxd, "LEGEND_ELEMENT")[0]
mxd_legend.title = ""
mxd_legend.updateItem(addLayer, newStyle)
mxd.saveACopy('newMXD.mxd')

This code update Legend Item by newly created style.

answered Jan 1, 2020 at 4:50
0

As commented by @Vince:

ArcPy does not support all ArcObjects functionality, especially with regard to mapping and symbology.

In ArcGIS Pro there is an ItemGroup class and:

The ItemGroup class allows you to change a heading value for a group and more importantly provides access to the individual items in each group.

However, the ItemGroup class appears to only be available for a UniqueValuesRenderer.

Since you are using ArcMap and a GraduatedColorsRenderer, the above will not provide a solution but it may provide some ideas about where to look for the functionality you seek within ArcGIS Desktop when you are using ArcPy with ArcGIS Pro.

answered Dec 31, 2019 at 5:34

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.