In pyQGIS I have added a vector layer based on a CSV file. The CSV file contains several fields: x
, y
, Capacity
, Category
.
I can render the map with simple points at the given (x,y) coordinates.
What I would like to do give each point a circular symbol with a diameter based on the Capacity
value and a color based on the Category
value. This is my current code for changing the color:
project = QgsProject.instance()
project.read("filename.qgz")
uri='file:///C:/Till//csv_file.csv?delimiter=,&yField=y&xField=x'
new_layer= QgsVectorLayer(uri, "new", "delimitedtext")
project.addMapLayer(new_layer)
fni = new_layer.fields().indexFromName('Category')
unique_cats = new_layer.uniqueValues(fni)
categories=[]
for unique_value in unique_cats:
symbol = QgsSymbol.defaultSymbol(new_layer.geometryType())
layer_style = {}
layer_style['color'] = '100, 100, 100' # just for testing
layer_style['outline'] = '#000000'
symbol_layer = QgsSimpleFillSymbolLayer.create(layer_style)
if symbol_layer is not None:
symbol.changeSymbolLayer(0, symbol_layer)
# create renderer object
category = QgsRendererCategory(unique_value, symbol, str(unique_value))
# entry for the list of category items
categories.append(category)
renderer = QgsCategorizedSymbolRenderer('EdgeRef', categories)
new_layer.setRenderer(renderer)
However when I render this layer, it just shows empty. What is going wrong? And how can I add the diameter feature to the geometry?