2 votos

Rotación y edición de la leyenda en el diseño utilizando PyQGIS

Estoy intentando poner una leyenda en la parte inferior del mapa y sólo he conseguido esto:

legend = QgsLayoutItemLegend(layout)
legend.model().setRootGroup(root)
layout.addLayoutItem(legend)
legend.attemptMove(QgsLayoutPoint(210, 5, QgsUnitTypes.LayoutMillimeters))

Esto crea la leyenda en el diseño pero quiero girarla 270°, eliminar los márgenes alrededor de los rectángulos de color, ocultar el título del subgrupo y ocultar el color blanco del fondo (para que el fondo de la leyenda aparezca transparente). También me gustaría reducir el espacio entre los elementos de la leyenda a 0,05 mm y cambiar el tamaño de los rectángulos de la leyenda. Las imágenes muestran el resultado del código y la imagen editada manualmente.

enter image description here

enter image description here

3voto

BWW Puntos 302

Supongo que esta respuesta no es una respuesta directa sino una forma de ayudarte a descubrir cómo cambiar programáticamente el elemento de diseño desde PyQGIS descubriendo las propiedades que estableces con la GUI.

project = QgsProject.instance()
manager = project.layoutManager()
layout = manager.layoutByName('yourlayoutname')
# Select the legend layout you've set in the GUI (the one you want to achieve through PyQGIS)
legend = layout.selectedLayoutItems()[0]
legend.setAutoUpdateModel(False)
legend.setItemRotation(270)
legend.setBackgroundEnabled(True)
legend.setSymbolHeight(7.0)
legend.setSymbolWidth(7.0)

De hecho, respondo a algunos de sus requisitos, ya que el código muestra cómo rotar, desactivar la leyenda automática, desactivar el fondo, cambiar las dimensiones del rectángulo.

Utilice los getters documentados en la API para inspeccionar el QgsLayoutItemLegend utilizando https://qgis.org/api/classQgsLayoutItemLegend.html#ac1842f95a9652810af008e1b3fc8d4ba , deberías ser capaz de entender cómo cambiar los otros parámetros que quieres cambiar.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X