Setting layer name in composer legend as "Hidden" using PyQGIS?

I had this problem too. My friend who is working for QGIS told me how.

What you can do is:

take the QgsLayerTreeLayer from the model (if you haven't include it in the model):

tree_layer = itemLlegend.modelV2().rootGroup().addLayer(layer)

If your layer is already in the model, just iterate rootGroup and grab your tree_layer.

After you got your tree layer:

from qgis.core import QgsLegendRenderer, QgsComposerLegendStyle
QgsLegendRenderer.setNodeLegendStyle(
    tree_layer, QgsComposerLegendStyle.Hidden)

This will add style to your tree_layer it will now will be hidden by the renderer (but, just the Visitors text will be hidden).


The updated recipe for QGIS 3.x

from qgis.core import QgsLayoutItemLegend, QgsLegendRenderer, QgsLegendStyle, QgsProject

project = QgsProject.instance()
manager = project.layoutManager()
layout = manager.layoutByName('print1') # Your layout name


# If only one legend within the layout
layoutItemLegend = [i for i in layout.items() if isinstance(i,  QgsLayoutItemLegend)][0]
# Could also use the following if you defined an id 'mylegend' for the QgsLayoutItemLegend (commented here)
# layoutItemLegend = layout.itemById('mylegend')
model = layoutItemLegend.model()
tree_legend = model.rootGroup()

# Desactivate auto refresh of the legend
layoutItemLegend.setAutoUpdateModel(False)
layoutItemLegend.updateLegend()


# Then do to apply change for the first element (group or layer)
QgsLegendRenderer.setNodeLegendStyle(
    tree_legend.children()[0], QgsLegendStyle.Hidden)