Используя морской пояс, как добавить вертикальные линии в график распределения (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'])
Участок:
Как я могу объединить эту настройку с вертикальными линиями, чтобы проиллюстрировать пороговые значения следующим образом:
Я знаю, что могу сделать это с помощью 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)])