Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to set the color of a vectorlayer feature depending on the feature attributes with PyQGIS. How do you acces the attributes of a vectorlayer feature?

share|improve this question
This recent answer may help you: – dakcarto Aug 20 '12 at 17:09
Thank you that was helpfull. – Ulf Sep 26 '12 at 11:45

To set the color of a vector layer feature depending on the feature attributes with PyQGIS is necessary to change the QgsSingleSymbolRendererV2 default object in a, for example, QgsGraduatedSymbolRendererV2 object. To test this I created the 'random' field name in a Polygon Vector Layer and this field was filled with aleatory values between 1 and 24. These values were grouped in three arbitrary classes in a tuple for being used in the following code at the Python Console of QGIS:

from PyQt4.QtCore import *
from PyQt4.QtGui import *

layer = iface.activeLayer()

# define ranges: label, lower value, upper value, color name
# in the field named 'random' (attributes table) 
values = (
    ('Low', 1, 8, 'green'),
    ('Medium', 9, 16, 'yellow'),
    ('Large', 17, 24, 'orange'),

# create a category for each item in values
ranges = []
for label, lower, upper, color in values:
    symbol = QgsSymbolV2.defaultSymbol(layer.geometryType())
    rng = QgsRendererRangeV2(lower, upper, symbol, label)

# create the renderer and assign it to a layer
expression = 'random' # field name
renderer = QgsGraduatedSymbolRendererV2(expression, ranges)


Before running the code at Python Console:

enter image description here

After running the code at the Python Console:

enter image description here

The renderer produced was of the QgsGraduatedSymbolRendererV2 type.

share|improve this answer

Right click on the layer in the table of contents > properties > style tab > there you have options to style as a single symbol, using categories, using graduated colours, and rules.

You then have the option to choose the field containing the values to be displayed.

See the QGIS manual for more information:


share|improve this answer
The OP is looking for a way to doing this using pyqgis which is the QGIS Python API, not via the GUI – Nathan W Aug 20 '12 at 10:37
I realise that now after getting a mark down for my "answer" :-P – mixedbredie Aug 20 '12 at 13:31

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.