How to extract xvalues and yvalues from a kdeplot

Question:

Given that I have a seaborn.kdeplot I want to extract the x and y points. Based on similar questions I have tried the following:

points = sns.kdeplot(targets, shade=True, label='train').get_lines()[0].get_data()
x      = points[0]
y      = points[1]

But I’m getting the error

Traceback (most recent call last):
  File "<string>", line 10, in <module>
IndexError: list index out of range

I’m using seaborn==0.12.2 and matplotlib==3.7.1

Asked By: James Arten

||

Answers:

Because you request shade=True (use fill=True in the latest seaborn versions), the output axes object does not contain a Line2D object (it instead contains a PolyCollection). If you remove the shade=True, you be able to extract the data in the way that you give:

ax = sns.kdeplot(targets, label='train')
points = ax.get_lines()[0].get_data()
x = points[0]
y = points[1]
Answered By: Matt Pitkin
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.