Python Seaborn绘制与给定X值相对应的Y值

2024-05-15 16:08:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在Seaborn distplot上绘制与某些X值相对应的点,这样它们要么落在密度曲线上,要么落在密度曲线之下。以下是来自以下URL的distplot: From the Seaborn site - distplot examples

下面是一张带有代码的图像:

enter image description here

例如,在上面所示的图中,我需要通过编程来确定,在密度曲线上,对应于X值0的Y轴值是什么。从这个数字来看,它似乎在0.37左右。我怎样才能在我的计划中得到它?在

假设这是可以做到的,那么我如何在显示的图中显示它,也就是说,哪一行代码将显示它。我正在将一组R可视化转换为Python。下面R中的图显示了我要实现的目标:

enter image description here

看到曲线上显示的点了吗?有许多点值要绘制,但如果你帮我画一个,我可以尝试做其余的。我是Matplotlib和Seaborn包的初始用户。在


Tags: the代码from图像url编程绘制site
1条回答
网友
1楼 · 发布于 2024-05-15 16:08:13

enter image description here

为了获得distplot的kde曲线上某个点的y坐标,可以使用曲线的底层数据。您可以使用line的^{}方法从测线图中获取数据。 然后,您可以使用例如^{}在感兴趣的点上插值数据。在

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


在评论中被问及如何获得这种解决方案:

从问题开始。我们有一个距离图,我们想在它的kde曲线上的某个点上画一个点。在

  1. 看看文档;distplot函数是否有一个参数可以满足我们的需要?不幸的是没有。在
  2. 函数是否返回对象?对。是曲线吗?不幸的是没有。相反,它是matplotlib轴。(用type()找到答案)
  3. 找出matplotlib轴是什么;读取the documentation。Uff,它很重,但是我们偶然发现了一个方法axes.get_lines();因为曲线应该是一条直线,这应该会有帮助。在
  4. 找出这些行是什么:它们是^{}对象。再次查看文档,我们发现有一个方法get_data。现在我们有了曲线的数据。太好了!在
  5. 在这一点上,如果我们有一个函数,我们可以用x值调用它来接收相应的y值。现在看来,我们需要自己找到这个函数。在
  6. 那么给定曲线的xy的数据,我们如何找到给定x值的y值呢?由于数据是离散的,我们需要插值。四处寻找“interpolate”&;“python”最终让我们想到numpy.interp。这为我们提供了绘制一个点所需的坐标。在
  7. 找出如何画一个点。嗯,那很简单。这方面有很多例子。在

就这样。在

相关问题 更多 >