Seaborn: How to add vertical lines to a distribution plot (sns.distplot)
Using the examples from seaborn.pydata.org and the Python DataScience Handbook, I'm able to produce a combined distribution plot with the following snippet:
Code:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# some settings
sns.set_style("darkgrid")
# Create some data
data = np.random.multivariate_normal([0, 0], [[5, 2], [2, 2]], size=2000)
data = pd.DataFrame(data, columns=['x', 'y'])
# Combined distributionplot
sns.distplot(data['x'])
sns.distplot(data['y'])
Plot:
How can I combine this setup with vertical lines so that I can illustrate thresholds like this:
I know I can do it with matplotlib like here Dynamic histogram subplots with line to mark target, but I really like the simplicity of seaborn plots and would like to know if it's possible to do it more elegantly (and yes, I know that seaborn builds on top of matplotlib).
Thank you for any suggestions!
Just use
plt.axvline(2.8, 0,0.17)
And the same for the other line
Here instead of 0.17 you can put the maxima of your distribution using some variable such as maxx = max(data)
or something similar. 2.8 is the position on the x-axis. Oh remember that the y-value has to be in between 0 and 1 where 1 is the top of the plot. You can rescale your values accordingly. Another obvious option is simply
plt.plot([2.8, 2.8], [0, max(data)])