我有一个我正在绘制的数据集。结果如下图所示:
下面是我的python代码:import numpy as np
# Extra plotly bits
import plotly
import plotly.plotly as py
import plotly.graph_objs as go
a = np.array([[1, 0.00617329], [24, 0.133699], [48, 0.130072], [72, 0.0166202], [96, -0.187917], [120, -0.445023], [144, -0.698984],
[168, -0.942063], [192, -1.15151], [216, -1.30742], [240, -1.36852], [264, -1.33541], [288, -1.18194], [312, -0.982113],
[336, -0.772301], [360, -0.562501], [384, -0.3764], [408, -0.219537], [432, -0.106257], [456, -0.0369356], [480, -0.000313192]])
trace_a = go.Scatter(
x = a[:,0],
y = a[:,1],
mode = 'lines+markers',
name = 'a',
line = dict(
shape='line',
color = ('rgb(205, 12, 24)'),
width = 1)
)
data = [trace_a]
# Edit the layout
layout = dict(title = 'Curvature Test',
xaxis = dict(title = 'Data'),
yaxis = dict(title = 'Value'),
)
# Prepare Figure
fig = go.Figure(data=data, layout=layout)
# Plot
plotly.offline.plot(fig, filename='curvature.html')
我要做的是添加一个附加的曲线图来跟踪主曲线图的曲率。在
可能会像下图所示:
(这是一个原型,黄色标记仅用于证明第二个曲线图代表第一个曲线图的曲率。)
因为我找不到正确的numpy/mathematic解决方案,所以我在另一个环境中使用了每个数据点的上一个切线和下一个切线的点积计算。这就是我的“穷人曲率”解决方案:
{a3}
我怎样才能创建第二个数据集,它一旦打印出来就代表了主数据集的曲率?在
免责声明:
我以前问过这个问题。然而,并没有想出一个优雅的解决方案。我也研究过曲率的话题,我知道曲率的计算。然而,我仍然在努力使用python/numpy和正确的数学方法将其组合起来。我也花了一些时间在下面的post上,但是不能完全移植那里提供的信息来解决我的问题。在
---编辑(1)--
以下是我的解决方案的结果: