gpt4 book ai didi

python - 使用等距(弧长)标记绘制曲线

转载 作者:太空狗 更新时间:2023-10-30 01:23:02 27 4
gpt4 key购买 nike

我想绘制一些实验数据的图表,这些数据以相对较高的速率采样,但使用以相等弧长间隔间隔的标记近似平滑曲线,如下图所示:

Graph with equal arc-length markers

我知道 plot 的 markevery 参数,但这会将标记集中在绘图的右侧,而左侧可能只有很少的标记。该解决方案应独立于 x 和 y 轴上的比例。我愿意安装额外的模块,但它应该是一个 python+matplotlib 解决方案。

最佳答案

我觉得我整理了一个比较好的解决方案。唯一的问题是以一种也使用有关最终图的纵横比信息的方式考虑数据比率。我还没有找到一个可靠的方法来做到这一点,虽然这个函数将接受一个数据比率,所以你可以玩直到输出看起来正确:

def spacedmarks(x, y, Nmarks, data_ratio=None):
import scipy.integrate

if data_ratio is None:
data_ratio = plt.gca().get_data_ratio()

dydx = gradient(y, x[1])
dxdx = gradient(x, x[1])*data_ratio
arclength = scipy.integrate.cumtrapz(sqrt(dydx**2 + dxdx**2), x, initial=0)
marks = linspace(0, max(arclength), Nmarks)
markx = interp(marks, arclength, x)
marky = interp(markx, x, y)
return markx, marky

使用示例(这个适用于iPython中的pylab模式):

x = linspace(0, 10*pi, 1000)
y = sin(x*2) + sin(x+1)

plot(x, y)
markx, marky = spacedmarks(x, y, 80)
plot(markx, marky, 'o', color='blue')

结果:

Sample output showing equally spaced markers

关于python - 使用等距(弧长)标记绘制曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17406758/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com