Groovy 如何生成拉伸图形的X值?

Groovy 如何生成拉伸图形的X值?,groovy,graph,interpolation,Groovy,Graph,Interpolation,我试图以某种方式规范每月数据 我的意思是,我需要取每天的值,检查每个月的数据和另一个月的数据 唯一的问题是,有些月份比其他月份长。所以我想出了一个方法,我想这样做,但我有点困惑,到底怎么做 基本上,我正在浏览这个网站:试图将每一组坐标转换成一个具有31个X和Y值的图形,我想使用余弦插值器,但我仍在试图弄清楚如何使用它 现在,X值有一个函数。我可以传入类似于1..28的内容,并将其变形为31个值…足够简单的代码,类似这样的内容对我很有用: def total = (1..30) def days

我试图以某种方式规范每月数据

我的意思是,我需要取每天的值,检查每个月的数据和另一个月的数据

唯一的问题是,有些月份比其他月份长。所以我想出了一个方法,我想这样做,但我有点困惑,到底怎么做

基本上,我正在浏览这个网站:试图将每一组坐标转换成一个具有31个X和Y值的图形,我想使用余弦插值器,但我仍在试图弄清楚如何使用它

现在,X值有一个函数。我可以传入类似于1..28的内容,并将其变形为31个值…足够简单的代码,类似这样的内容对我很有用:

def total = (1..30)
def days = 28

def resize = {x, y->
    result = []
    x.each{ result << (it * (y/x.size())}
    return result
}

resize(total,days)
它返回一个包含31个Y值的列表,范围从0到28

我的问题是:如何将对应的Y值列表转换为这些值?我很难理解这个概念,需要一些帮助

我的第一个想法是简单地通过这个函数运行Y值,但它返回的值都低于原始输入值

我正在寻找一些可以保留某些点上的值的东西,但只需将图形水平拉伸即可

例如,当x值为图形长度的1/3时,该值需要与原始图形长度的1/3时的值相同

有人能帮我吗?这把我难住了


提前谢谢

不确定问题出在哪里,所以我编了一些数据

我认为你的算法是正确的,你只需要规范化x轴

我想出了这个代码和一些情节来证明我相信答案是什么

定义一些x和y值:

def x = 1..30
def y = [1..15,15..1].flatten()
然后,以以下形式生成xy值列表:[[x,y],[x,y]

如果我们绘制此列表,我们会得到:

然后定义一个与您的函数基本相同的规格化函数,但它不涉及y值

def normalize( xylist, days ) {
  xylist.collect { x, y -> [ x * ( days / xylist.size() ), y ] }
}
然后我们可以将我们的名单正常化为28天

def normalxy = normalize( xy, 28 )
现在,如果我们画出这些点,我们得到

正如你所看到的,两个图都有相同的形状,它们只是不同的宽度


我没有抓住要点吗?

不确定问题出在哪里,所以我编造了一些数据

我认为你的算法是正确的,你只需要规范化x轴

我想出了这个代码和一些情节来证明我相信答案是什么

定义一些x和y值:

def x = 1..30
def y = [1..15,15..1].flatten()
然后,以以下形式生成xy值列表:[[x,y],[x,y]

如果我们绘制此列表,我们会得到:

然后定义一个与您的函数基本相同的规格化函数,但它不涉及y值

def normalize( xylist, days ) {
  xylist.collect { x, y -> [ x * ( days / xylist.size() ), y ] }
}
然后我们可以将我们的名单正常化为28天

def normalxy = normalize( xy, 28 )
现在,如果我们画出这些点,我们得到

正如你所看到的,两个图都有相同的形状,它们只是不同的宽度


我错过要点了吗?

你的x,y数据是如何存储的?你只在这里显示x数据,我想作为一个例子…x数据是我目前能够处理的所有数据。我的y数据存储在一个与总计长度相等的列表中。我可以通过执行[总计,y值]来引用每个坐标对.转置如果这使得这个问题变得更容易,那么你的x,y数据是如何存储的?你只在这里显示x数据,我想作为一个例子…x数据是我目前能够处理的所有数据。我的y数据存储在一个与总和长度相等的列表中。我可以通过执行[total,yValues]来引用每个坐标对。如果这使问题更容易解决,请转置。这非常有帮助,非常感谢!您做到了。这非常有帮助,非常感谢!