如何从图表中获取值?

时间:2017-10-24 11:28:12

标签: python numpy matplotlib graph

如何从Python中的绘图得到 y - 轴上的精确值?我有两个数组vertical_datagradient(temperature_data),我将它们绘制为:

plt.plot(gradient(temperature_data),vertical_data)
plt.show()

此处显示的情节:

plot

我需要零值,但它不完全为零,它是一个浮点数。

1 个答案:

答案 0 :(得分:1)

我没有找到关于如何找到numpy数组的根或零的问题的一个很好的答案,所以这是一个解决方案,使用简单的线性插值。

import numpy as np
N = 750
x = .4+np.sort(np.random.rand(N))*3.5
y = (x-4)*np.cos(x*9.)*np.cos(x*6+0.05)+0.1


def find_roots(x,y):
    s = np.abs(np.diff(np.sign(y))).astype(bool)
    return x[:-1][s] + np.diff(x)[s]/(np.abs(y[1:][s]/y[:-1][s])+1)

z = find_roots(x,y)

import matplotlib.pyplot as plt

plt.plot(x,y)
plt.plot(z, np.zeros(len(z)), marker="o", ls="", ms=4)

plt.show()

enter image description here

当然,您可以将xy的角色转换为

plt.plot(y,x)
plt.plot(np.zeros(len(z)),z, marker="o", ls="", ms=4)

enter image description here

<小时/> 因为那些询问如何以非零值y0获取截距的人,请注意,人们可能只是找到y-y0的零。

y0 = 1.4
z = find_roots(x,y-y0)
# ...
plt.plot(z, np.zeros(len(z))+y0)

enter image description here