在Seaborn上绘制y轴网格和kdeplot之间的交点

时间:2018-10-25 09:30:31

标签: python matplotlib seaborn

我使用seaborn kdeplot创建了以下图并自定义了网格线。 enter image description here

sns.set_style('whitegrid')
cdf_accuracy = sns.kdeplot(eval_df['accuracy'], cumulative=True)
cdf_accuracy.yaxis.set_major_locator(ticker.MultipleLocator(0.25))
cdf_accuracy.xaxis.set_major_locator(ticker.MultipleLocator(10))

但是,我想在y轴网格线与绘图相交的点上显示x轴上的网格线。有办法吗?

感谢您的回答

1 个答案:

答案 0 :(得分:1)

只要您的特征是单调的(应与累积数据集一起给出),就可以简单地在y值上使用插值:

import numpy as np

y_intrsct = [.25, .5, .75]
x_intrsct = np.interp(y_intrsct, y_data, x_data)

结果

array([67.69792378, 83.24194722, 92.24041857])

enter image description here

用以下代码绘制:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(x_data, y_data)
ax.set_yticks(np.linspace(0, 1, 5))
ax.grid(axis='y')
ax.vlines(x_intrsct, *ax.get_ylim())