Skip to content

Instantly share code, notes, and snippets.

@agiudiceandrea
Last active February 23, 2021 16:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save agiudiceandrea/b60c07ad5c34a702ebb24b8dd6ca1646 to your computer and use it in GitHub Desktop.
Save agiudiceandrea/b60c07ad5c34a702ebb24b8dd6ca1646 to your computer and use it in GitHub Desktop.
# See https://gis.stackexchange.com/questions/385525/qgis-how-to-invert-the-values-in-a-layout-legend
def invertLegendOrder():
layer = iface.activeLayer()
view_model = iface.layerTreeView().layerTreeModel()
toc_layer = view_model.rootGroup().findLayer(layer)
cat_count = view_model.legendRootRowCount(toc_layer)
order_property = toc_layer.customProperty('legend/node-order')
# print(order_property)
if ( order_property is not None ) & ( order_property != "empty" ): # A custom node order property has already been set
current_order = [int(i) for i in order_property.split(',')]
new_order = [i for i in reversed(current_order)]
else:
current_order = [i for i in range(cat_count)]
new_order = [i for i in reversed(current_order)]
QgsMapLayerLegendUtils.setLegendNodeOrder(toc_layer, new_order)
view_model.refreshLayerLegend(toc_layer)
# order_property = toc_layer.customProperty('legend/node-order')
# print(order_property)
def removeCustomLegendOrder():
layer = iface.activeLayer()
view_model = iface.layerTreeView().layerTreeModel()
toc_layer = view_model.rootGroup().findLayer(layer)
toc_layer.removeCustomProperty('legend/node-order')
view_model.refreshLayerLegend(toc_layer)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment