Bha*_*rat 2 python plot point matplotlib seaborn
我需要在Seaborn distplot上绘制与某些X值相对应的点,以使它们落在密度曲线上或密度曲线下方。这是来自以下URL的distplot: 从Seaborn网站-distplot示例
这是带有代码的图像:
因此,例如,在上面显示的曲线图中,我需要以编程方式确定与落在密度曲线上的X值0对应的Y轴值是多少。从图中看来,它大约在0.37左右。如何在我的程序中得到它?
假设可以做到,那么我如何在所示的图中显示它,即,哪一行代码可以显示出来。我正在将一组R可视化转换为Python。R中的以下图显示了我要实现的目标:
看到曲线上显示的点了吗?有许多要绘制的点值,但是如果您帮助我绘制一个点值,我可以尝试进行其余操作。我是Matplotlib和Seaborn软件包的初学者。
为了获得distplot的kde曲线上某个点的y坐标,可以使用曲线的基础数据。您可以使用折线get_data方法从折线图中获取数据。然后,您可以使用例如在感兴趣的点上插值数据numpy.interp。
import seaborn.apionly as sns
import numpy as np; np.random.seed(0)
import matplotlib.pyplot as plt
x = np.random.randn(100)
ax = sns.distplot(x, hist_kws={"ec":"k"})
data_x, data_y = ax.lines[0].get_data()
xi = 0 # coordinate where to find the value of kde curve
yi = np.interp(xi,data_x, data_y)
print ("x={},y={}".format(xi, yi)) # prints x=0,y=0.3698
ax.plot([0],[yi], marker="o")
plt.show()
Run Code Online (Sandbox Code Playgroud)
从问题开始。我们有一个分布图,我们想在其kde曲线的某个点上绘制一个点。
type())axes.get_lines();因为曲线应该是一条线,所以应该有所帮助。Line2D对象。再次查看文档,我们发现有一种方法get_data。所以现在我们有了曲线的数据。大!x与y曲线的数据,我们如何找到一个给定的x值的y值?由于数据是离散的,因此我们需要进行插值。寻找“ interpolate”和“ python”最终将我们带到numpy.interp。因此,这为我们提供了绘制点所需的坐标。而已。