Python 在seaborn上绘制y轴栅格和kdeplot之间的交点

Python 在seaborn上绘制y轴栅格和kdeplot之间的交点,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,我使用seaborn kdeplot和自定义网格线创建了以下绘图。 但是,我想显示x轴上的网格线,就在y轴网格线与绘图相交的点上。有办法做到这一点吗 感谢您的回答只要您的特征是单调的,这应该通过累积数据集给出,您可以简单地对y值使用插值: import numpy as np y_intrsct = [.25, .5, .75] x_intrsct = np.interp(y_intrsct, y_data, x_data) 导致 array([67.69792378, 83.241947

我使用seaborn kdeplot和自定义网格线创建了以下绘图。

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


感谢您的回答

只要您的特征是单调的,这应该通过累积数据集给出,您可以简单地对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])

用以下代码绘制:

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())

你想要一条线还是网格线??您可以关闭x轴网格线并使用
ax.axvline()
方法。我想要显示y轴上25、50和75处网格线与绘制分布之间的交点的线。感谢SpghttCd的回答。但是,我不确定它是否适合我,因为我无法检索y_数据。有什么方法可以直接在seaborn的kdeplot中创建插值?我对seaborn的kdeplot不是很有经验,但经过短暂的试用,我能够通过
cdf\u精度获得数据。get\u children()[0]。get\u data()
,因为kdeplot也经常与条形图结合使用,依赖直线作为轴的第一个子轴有点危险。因此,更可靠(但在更复杂的绘图中仍可能出现故障)的是
ax.lines[0]。get_data()
。谢谢@ImportanceOfBeingErnest-我认为这不是一种正确的方法。。。难道没有一个替代函数可以正式返回数据,然后可以通过一个简单的
plt.plot()
来绘制数据吗?也许在
numpy
scipy
pandas
中,例如。
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())