Let's start this tutorial by adding the data into QGIS map canvas using the following code.
After running the code, the data should be added into a layer which is called crime as seen in the figure 1.
|Figure 1. Point Data
Now let's visualize the data in a heatmap style with QgsHeatmapRenderer class. Therefore we define a variable for the class as in the following code. The vector setRenderer method is used to apply the heatmap style, and triggerRepaint method is used to update the view.
Running the code, the heatmap should be seen as in figure2.
|Figure 2. Heatmap in Grayscale Gradient
The heatmap is there, we can see it. It's in a grayscale gradient where minimum value is white and maximum is black. The gradient color can be changed with the colorRamp method from the QgsStyle class.
The name of the color ramp is defined in the colorRamp method. In the code above I use Spectral with color gradients starting from red as minimum value to blue for maximum. Figure 4 shows the color ramp name and it's color variation.
|Figure 3. Color Ramp Variation
Using the Spectral color gradients the heatmap now is like figure 4.
|Figure 4. Heatmap with Spectral Color Ramp
It looks nicer. But I want the red for maximum color and blue for minimum, because it's more intuitive to represent high value with reddish color and low with the bluish one. It can be done by inverting the color.
Figure 5 shows the Spectral inverting color. Blue becomes minimum and red as maximum.
|FIgure 5. Heatmap with Spectral Invert Color Ramp
The minimum color covered all the map extent. This is something we don't want, because it is hiding other layers behind it. To get rid of this, the minimum color needs to be transparent. This can be done with the setColor1 method of color ramp as the following.
The setColor1 method takes QColor argument with the attribute Red, Green, Blue and alpha/opacity. Figure 6 shows the heatmap with transparent minimum color.
|Figure 6. Heatmap with transparent minimum color
That's all this tutorial on how to create heatmap in QGIS using Python. We learned how to add point vector data into a QGIS map canvas, create a heatmap, change the color ramp, invert color and change the color transparency. There are more methods available for heatmap renderer class. If you want to find out more, please check out the PyQGIS API Documentation.
For other interesting PyQGIS tutorials please visit PyQGIS Tutorial Series. Thanks for reading!