Libraries
First, we need to import a few libraries:
- matplotlib: for plotting
- seaborn: for making the plots prettier
import matplotlib.pyplot as plt
import seaborn as sns
Dataset
The dataset that we will use is the iris
dataset that we can load using seaborn.
df = sns.load_dataset('iris')
Most simple density plot
The following code produces 3 contour plots using seaborn python library. You have to provide 2 numerical variables as input (one for each axis). The function will calculate the kernel density estimate and represent it as a contour plot or density plot.
The aguments of the function kdeplot()
are:
x, y
: Variables that specify positions on the x and y axes.shade
: Controls the presence of a shade.cmap
: Colormap.bw_adjust
: Bandwidth, smoothing parameter.thresh
: number in [0, 1], Lowest iso-proportion level at which to draw a contour line.
Here is how we can create the default 2D density plot:
sns.set_style("white")
sns.kdeplot(x=df.sepal_width, y=df.sepal_length)
plt.show()
Change colors
In order to make the chart more readable, we can add colormap to the plot:
sns.set_style("white")
sns.kdeplot(x=df.sepal_width, y=df.sepal_length, cmap="Reds", fill=True)
plt.show()
Change smoothing parameter
The bw_adjust
argument controls the bandwidth of the kernel density estimate. The higher the value, the smoother the plot will be. Here is an example with a bw_adjust
value of 0.5:
sns.set_style("white")
sns.kdeplot(x=df.sepal_width, y=df.sepal_length,
cmap="Blues", fill=True, bw_adjust=0.5)
plt.show()
Going further
This post explains how to create a 2D density plot with seaborn.
You might be interested in how to create a hexbin plot and how to create a 2D histogram.