如何从python的matplotlib中提取kdensity图中的x,y数据

2024-04-24 15:39:27 发布

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

我想弄清楚如何制作一个随时间变化的单变量kdensity图的3d图形(因为它们会随着时间从滑动的时间窗口中提取数据)。在

由于我无法直接找到如何实现这一点,我首先尝试在python中获取matplotlib的kdensity绘图的x,y绘图数据。我希望在我提取它们之后,我可以使用它们和一个时间变量来绘制一个三维图。在

我看到几篇文章在讲述如何在Matlab中实现这一点。从底层图获取XdataYdata的所有引用:

x=get(h,'Xdata')
y=get(h,'Ydata')

用python怎么样?在


Tags: 数据图形绘图getmatplotlib文章时间绘制
2条回答

答案已经包含在另一个线程(How to create a density plot in matplotlib?)中。很容易从一组数据中得到一组kdensityx和y。在

import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import gaussian_kde
data = [1.5]*7 + [2.5]*2 + [3.5]*8 + [4.5]*3 + [5.5]*1 + [6.5]*8 # data is a set of univariate data
xs = np.linspace(0,max(data),200) # This 200 sets the # of x (and so also y) points of the kdensity plot
density = gaussian_kde(data)
density.covariance_factor = lambda : .25 
density._compute_covariance()
ys = density(xs)
plt.plot(xs,ys)

就在这里。kdensity曲线和它背后的x,y数据。在

不确定kdensity图是如何工作的,但是请注意,matplotlib.pyplot.plot返回添加的Line2D对象的列表,实际上,这些对象是存储X和Y数据的地方。我怀疑他们这么做是为了让它和MATLAB类似。在

import matplotlib.pyplot as plt

h = plt.plot([1,2,3],[2,4,6])  # [<matplotlib.lines.Line2D object at 0x021DA9F0>]
x = h[0].get_xdata()  # [1,2,3]
y = h[0].get_ydata()  # [2,4,6]

相关问题 更多 >