Используя морской пояс, как добавить вертикальные линии в график распределения (sns.distplot)

Используя примеры из seaborn.pydata.org и Python DataScience Handbook, я могу создать комбинированный график распространения со следующим фрагментом:

Код:

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'])

Участок: enter image description here

Как я могу объединить эту настройку с вертикальными линиями, чтобы проиллюстрировать пороговые значения следующим образом:

enter image description here

Я знаю, что могу сделать это с помощью matplotlib, как здесь Сюжеты динамической гистограммы с линией для обозначения цели, но мне очень нравится простота графиков морского происхождения и я хотел бы знать, возможно ли сделать это более элегантно (и да Я знаю, что Seaborn строится на основе matplotlib).

Спасибо за любые предложения!

Ответы

Ответ 1

Просто используйте

plt.axvline(2.8, 0,0.17)

И то же самое для другой линии

Здесь вместо 0.17 вы можете поместить максимумы своего распределения с помощью некоторой переменной, такой как maxx = max(data) или что-то подобное. 2.8 - положение на оси х. О, помните, что значение y должно находиться между 0 и 1, где 1 - верхняя часть графика. Вы можете масштабировать свои значения соответствующим образом. Другой очевидный вариант - просто

plt.plot([2.8, 2.8], [0, max(data)])