1

我正在尝试通过 PyQGIS (3.x) 添加直方图。这是示例点 shapefile 和我试图实现的最终输出: 样本点 shapefile 和最终输出 我尝试了下面的代码,但我的 QGIS 冻结了。当前代码不包括每个直方图的设置位置。我想根据字段 x 和 y 设置直方图位置。

以下是我在 QGIS 上手动完成的设置以获得最终输出图像: 设置

提前感谢您的帮助和想法!

layer=iface.activeLayer()
hist = QgsHistogramDiagram()
ds = QgsDiagramSettings()

# Set histogram and diagram settings:
dColors = {'export': QColor("#b7484b"),'import': QColor("#99dbfe")}
ds.categoryColors = dColors.values()
ds.categoryAttributes = dColors.keys()
ds.font = QFont("Helvetica", 12)
ds.transparency = 0
ds.size = QSizeF(50.0, 50.0)
ds.sizeType = 0
ds.labelPlacementMethod = 1
ds.scaleByArea = True
ds.minimumSize = 0
ds.BackgroundColor = QColor(255, 255, 255, 255)
ds.PenColor = QColor("black")
ds.penWidth = 0

# Set renderer:
renderer = QgsLinearlyInterpolatedDiagramRenderer()
renderer.setUpperValue(10)  # Here you should set the maximum value of both attributes
renderer.setUpperSize(QSizeF(20, 20))
renderer.setLowerValue(0)
renderer.setLowerSize(QSizeF(0, 0))
renderer.setDiagram(hist)
renderer.setDiagramSettings(ds)

# Set diagram layer settings:
layer.setDiagramRenderer(renderer)
dls = QgsDiagramLayerSettings()
dls.dist = 0
dls.priority = 0
dls.xPosColumn = -1
dls.yPosColumn = -1
dls.placement = 0

layer.setDiagramLayerSettings(dls)
layer.triggerRepaint()

4

0 回答 0