How to use kdeplot in seaborn

share link

by gayathrimohan dot icon Updated: Aug 31, 2023

technology logo
technology logo

Solution Kit Solution Kit  

A Seaborn KDEplot (Kernel Density Estimate plot) is a data visualization tool. The distribution of a continuous variable represents its usage.

It creates a smooth curve that will estimate the probability density function of the data. KDEplots are useful for gaining insights into the underlying distribution of data. Identifying patterns and comparing distributions between different groups does this. They can be effective when dealing with unimodal distributions. You can customize this with parameters. They are like bandwidth to control the smoothness of the curve.  


We use a Seaborn KDEplot to visualize the distribution of a single variable. It's useful for exploring the shape and density of data. Users use KDEplots for continuous data. You can also use them for other data types, such as time series and scatter plots.  

  • Continuous Data Distribution: These visualizes the data, such as age, height, or temperature. The plot estimates the probability density function of the data. Providing insights does this. We analyze the distribution of values along the range of the variable.  
  • Time Series Data: This can visualize the distribution of values within a time series. This can help us see how values change over time. But keep in mind that KDEplots are best suited for capturing trends in distribution.  
  • Scatter Plots: It shows the relationship between two variables. You can use a KDEplot to visualize the density of points in a scatter plot.   


You have various options to customize its appearance and the data it displays. When creating a Seaborn KDE plot, you do this. 

  • Data Input: You can provide data as a univariate array-like object (e.g., a list or a Pandas Series). You can also create a bivariate KDE plot by passing in two variables.  
  • Kernel and Bandwidth: You can choose different kernel functions. One option is the Gaussian cosine, which shapes the estimation kernel. The bandwidth parameter controls the width of the kernels. Thus, the smoothness of the resulting plot.  
  • Shading: Using the shade parameter, you can control whether to shade the area under the KDE curve. You can shade the area, the area below or turn off shading.  
  • Color and Style: Seaborn lets you specify the color of the KDE plot using the color parameter. You can also customize the line style using linestyle.  
  • Vertical or Horizontal Orientation: By default, KDE plots are vertical. You can switch to a horizontal orientation using the vertical parameter.  
  • Cumulative Distribution: You can choose to display the CDF. Setting the cumulative parameter to True does it.  
  • Common Support: Use the common_norm parameter to normalize many KDE plots. We make them easier to compare.  
  • Many Plots: Seaborn allows you to create many KDE plots in a single figure. You can use the sns.displot function to arrange many plots, with options like cool and row.  
  • Rug Plots: Adding rug plots along the axes. This can provide more insight into the distribution of data points.  
  • Visualizing Categorical Data: Categorical data create a categorical KDE plot. You can achieve this using sns.catplot with the kind="kde" option.  
  • Adjustable Axes: You can access the underlying axes. Also, customize them further by using the ax parameter.  

Here are some tips for customizing a Seaborn KDEplot:  

  • Change Plot Type: It offers different plot types, such as the default 'line' or 'rug' plots. You can set the common parameter to adjust the kernel density estimate.  
  • Adjust Aesthetics: Use parameters like color, linewidth, and linestyle. The plot lines use that to change their appearance.  
  • Add Labels and Titles: Set x and y axes labels using xlabel and ylabel. 
  • Customize Axes Limits: Use xlim and ylim to set specific limits for the x and y axes.  
  • Annotations: Use annotations from Matplotlib to add custom annotations. The speaker uses that to highlight specific features in the plot.  
  • Customize Legend: You can specify labels for each distribution.  
  • Shade Areas: Use the fill_between function to shade areas under the KDE curve. To emphasize certain regions of the plot, we do this.  
  • Change Kernel Parameters: Adjust bandwidth and kernel parameters. You can control the smoothness of the KDE estimate by using the bw_adjust parameter.  
  • Many Plots: Combine many KDE plots in a single figure. You can do this by using Seaborn's FacetGrid for easy comparison.  
  • Color Palettes: Explore Seaborn's color palettes. You do this to find the one that suits your visualization. Use the palette parameter to apply the desired color scheme.  

Here's some advice on using Seaborn's KDEplots to analyze data:  

  • Choose the Right Data: Make sure you have a clear understanding of your dataset. KDEplots work best with continuous numerical data. So, ensure your dataset fits this need.  
  • Import Libraries: Import the necessary libraries. Including Seaborn does this.   
  • Create a KDEplot: Use Seaborn's sns.kdeplot() function to create the KDEplot. Pass in the data you want to analyze and specify the column you're interested in.  
  • Subplots and Grouping: You can create subplots or group KDEplots. FacetGrid in Seaborn allows for better comparison. Different groups or subcategories do this.  
  • Visualize Patterns: Look for peaks and valleys in the KDEplot. Valleys between peaks can say gaps or separations in the data.  
  • Identify Trends: Observe the general shape of the KDEplot. Is it unimodal (single peak), bimodal (two peaks), or multi-modal? This can suggest underlying trends or distribution characteristics in the data.  
  • Compare Distributions: Overlay many KDEplots to compare distributions. You do this across different subsets of your data. This helps identify variations, differences, and similarities between groups.  
  • Add Context: Consider adding context to your KDEplots. Including labels, titles, and axis names achieves this. This makes your visualizations more informative.  
  • Combination with Other Plots: KDEplots work well when combined with other plots. They are like scatter plots or histograms. This combination can provide a more comprehensive understanding of your data.  
  • Iterate and Explore: Don't hesitate to iterate and experiment with your KDEplots.   

The parameters you can adjust in a Seaborn KDEplot:  

  • Data and Variables: You can specify the data you want to plot using the data parameter. Also, plot the variables for the x-axes and axes using the x and y parameters.  
  • Kernel and Bandwidth: This determines the kernel used for smoothing the data. Common options include 'gau' (Gaussian), 'cos' (cosine), and 'biw' (biweight). The bw_method parameter controls the bandwidth used for the kernel density estimation.  
  • Common Scaling: You can normalize many KDE plots to the same scale. This is useful when comparing many distributions.  
  • Vertical vs. Horizontal: By default, KDEplot creates vertical density plots. You can switch to horizontal density plots by using the vertical parameter.  
  • Shading and Color: You can adjust the shading of the KDE plot using the shade parameter. The color parameter lets you set the color of the plot.  
  • Label and Legend: The plot uses the label parameter to specify its label, which is then used in the legend.  
  • Axes Scaling: To adjust the scaling of the x-axis and y-axis, you can use parameters. They are like xscale and yscale to set the scaling type. Common options are 'linear', 'log', and 'symlog'.  
  • Many Plots: If you want to plot many KDEs in one plot, you can use the ax parameter to specify the Axes object.  

In conclusion, Seaborn KDEplots offers many benefits for data analysis. They are easy to use, allowing users to visualize data distributions. Additionally, these plots provide a high level of customization. Enabling researchers and analysts to tailor visuals does it.   

Fig : Preview of the output that you will get on running this code from your IDE.


In this solution we are using seaborn library of Python.


Follow the steps carefully to get the output easily.

  1. Download and Install the PyCharm Community Edition on your computer.
  2. Open the terminal and install the required libraries with the following commands.
  3. Install seaborn - pip install seaborn.
  4. Install matplotlib - pip install matplotlib.
  5. Install numpy - pip install numpy.
  6. Create a new Python file on your IDE.
  7. Copy the snippet using the 'copy' button and paste it into your Python file.
  8. Run the current file to generate the output.

I hope you found this useful.

I found this code snippet by searching for 'How to use kdeplot in seaborn' in Kandi. You can try any such use case!

Environment Tested

I tested this solution in the following versions. Be mindful of changes when working with other versions.

  1. PyCharm Community Edition 2022.3.1
  2. The solution is created in Python 3.11.1 Version
  3. seaborn v0.12.2 Version
  4. numpy v1.25.0rcl Version
  5. matplotlib v3.7.1 Version

Using this solution, we can able to use kdeplot in seaborn in Python with simple steps. This process also facilities an easy way to use, hassle-free method to create a hands-on working version of code which would help us to use kdeplot in seaborn in Python.

Dependent Libraries

seabornby mwaskom

Python doticonstar image 10797 doticonVersion:v0.12.2doticon
License: Permissive (BSD-3-Clause)

Statistical data visualization in Python


            seabornby mwaskom

            Python doticon star image 10797 doticonVersion:v0.12.2doticon License: Permissive (BSD-3-Clause)

            Statistical data visualization in Python

                      numpyby numpy

                      Python doticonstar image 23755 doticonVersion:v1.25.0rc1doticon
                      License: Permissive (BSD-3-Clause)

                      The fundamental package for scientific computing with Python.


                                numpyby numpy

                                Python doticon star image 23755 doticonVersion:v1.25.0rc1doticon License: Permissive (BSD-3-Clause)

                                The fundamental package for scientific computing with Python.

                                          You can search for any dependent library on 'seaborn' and 'numpy'.


                                          1. For any support on kandi solution kits, please use the chat
                                          2. For further learning resources, visit the Open Weaver Community learning page


                                          1. What are Bivariate Kdeplots?   

                                          A Bivariate KDEplot (Kernel Density Estimate plot) is a type of data visualization. We use it to show the distribution of two variables. It combines aspects of scatter plots and density plots. Exploratory data analysis uses them. We use that to gain insights into the interaction between two variables.  

                                          2. How is a univariate or bivariate kernel density estimate used in Seaborn Kdeplot?  

                                          Seaborn's kdeplot function is a univariate kernel density estimate (KDE). Users use it to visualize the distribution of a single variable. While visualizing the joint distribution of two variables, we use a bivariate KDE. The KDE plot shows the estimated probability density function of the data.  

                                          For a univariate KDE, you pass a single column of data to the data parameter. Seaborn calculates the KDE and plots it on the y-axis against the variable's values on the x-axis.  

                                          For a bivariate KDE, you pass two columns of data to the data parameter. Here's an example of using kdeplot for both univariate and bivariate KDEs:  

                                          import seaborn as sns   

                                          import matplotlib.pyplot as plt  

                                          # Univariate KDE   

                                          data = sns.load_dataset("iris")   

                                          sns.kdeplot(data=data['sepal_length'], shade=True, color='blue')  

                                          # Bivariate KDE   

                                          sns.kdeplot(data=data, x='sepal_length', y='sepal_width', shade=True, cmap='Blues')   


                                          3. What is the difference between Univariate and Bivariate Seaborn Kdeplot?  

                                          The main difference between Univariate and Bivariate Seaborn kdeplot. It lies in the number of variables they represent.  

                                          • Univariate KDEplot: This displays the distribution of a single variable. It shows the probability density of that variable along its range.  
                                          • Bivariate KDEplot: This shows the joint distribution of two variables. It creates a 2D representation of their densities. You can visualize the relationship between them.  

                                          4. Which Python Library can create Interactive plots using seaborn kdeplot?  

                                          You can use the library in Python to create interactive plots. The seaborn kdeplot function does this. It allows you to create interactive visualizations. You do it based on your seaborn plots, including KDE plots. You need to use the express module to achieve this.   

                                          5. Is there a Matplotlib module to plot kdeplots that are less cluttered than Seaborn's one?  

                                          Matplotlib itself doesn't have a built-in function for KDE plots. But you can customize Matplotlib plots to achieve similar results. Try adjusting the KDE's bandwidth parameter to make KDE plots less cluttered. A smaller bandwidth will create a smoother plot with less noise.  

                                          Here's an example of how you can create a KDE plot using Matplotlib with a custom bandwidth:  

                                          import matplotlib.pyplot as plt   

                                          import numpy as np   

                                          from scipy.stats import norm  

                                          # Generate sample data   

                                          data = np.random.randn(1000)  

                                          # KDE plot using Matplotlib   

                                          plt.figure(figsize= (8, 6))  

                                          # Custom bandwidth   

                                          bandwidth = 0.3  

                                          # Create KDE using the Gaussian kernel   

                                          kde = np.sum (norm.pdf (np.linspace(-4, 4, 1000) [:, np.newaxis], data, bandwidth), axis=1)   

                                          kde /= np.trapz(kde, dx=0.01)   

                                          # Normalize the area under the curve  

                                          plt.plot(np.linspace(-4, 4, 1000), kde, label='KDE (Custom Bandwidth)') plt.hist(data, bins=30, density=True, alpha=0.5, label='Histogram')  



                                          plt.title('Custom KDE Plot using Matplotlib')   



                                          See similar Kits and Libraries