Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript的二维数组(p5js) 我有以下数组,a希望用p5js(javascript)将其显示为堆叠条形图。_Javascript_Html_Arrays_Multidimensional Array_P5.js - Fatal编程技术网

使用javascript的二维数组(p5js) 我有以下数组,a希望用p5js(javascript)将其显示为堆叠条形图。

使用javascript的二维数组(p5js) 我有以下数组,a希望用p5js(javascript)将其显示为堆叠条形图。,javascript,html,arrays,multidimensional-array,p5.js,Javascript,Html,Arrays,Multidimensional Array,P5.js,在下面,您可以看到将显示在堆叠条形图X轴上的arrayOfMonths(month1,month2,…)。现在,每个月都有许多其他(0到多个)元素。这些是我想在Y轴上显示的元素,例如month1有两个元素,我想在X轴的第一个元素上创建两个矩形,以此类推,如下所示: 4| ▭ 3| ▭ ▭ 2| ▭ ▭ ▭ 1| ▭ ▭ ▭ ▭ ▬▬▬▬▬▬▬▬▬▬▬▬▬▬ m1 m2 m3 m4 如果你知道如何处理二维数组,请告诉我:)谢谢 /*所需变量声明*/ 变

在下面,您可以看到将显示在堆叠条形图X轴上的arrayOfMonths(month1,month2,…)。现在,每个月都有许多其他(0到多个)元素。这些是我想在Y轴上显示的元素,例如month1有两个元素,我想在X轴的第一个元素上创建两个矩形,以此类推,如下所示:

4|     ▭

3|     ▭   ▭

2| ▭  ▭    ▭

1| ▭  ▭ ▭ ▭
▬▬▬▬▬▬▬▬▬▬▬▬▬▬
   m1 m2 m3 m4
如果你知道如何处理二维数组,请告诉我:)谢谢

/*所需变量声明*/
变量month1=[“M01V01”、“M01V02”];
var month2=[“M02V01”、“M02V02”、“M02V03”、“M02V04”];
变量month3=[“M03V01”];
变量月4=[“M04V01”、“M04V02”、“M04V03”];
var arrayOfMonths=[month1、month2、month3、month4];
var arrayOfResponses=[“1”、“2”、“3”、“4”、“5”];
函数addValues(){
var locX=画布宽度-(画布宽度-125);
var locY=画布高度-25;
var-barWidth=50;
var barData=画布高度/(numOfResponses+2);

对于(var x=0;x根据您的数据,这是一种方法。您可以
将x轴和y轴上的元素数映射到图形的大小或这些轴的大小,因此每个索引都在轴的
0-data.length
start-end
之间缩放。您还可以使用
xTicks
的第一个元素来表示n,然后根据这些数据绘制轴

对于数据,您只需循环
xData
,它是2D数组,并使用
x
y
位置的当前索引,从
xTicks
yTicks
。您还需要调整rects位(+-5),这是10的一半,对于ticks文本也是如此

注意,rects的
y
位置是基于它在months数组中的索引,而不是基于它的文本,因此,例如,如果你有
var month1=[“M01V03”,“M01V04”]
它仍然位于前两个y位置,而不是文本的最后一个字符

var month1=[“M01V01”、“M01V02”];
var month2=[“M02V01”、“M02V02”、“M02V03”、“M02V04”];
变量month3=[“M03V01”];
变量月4=[“M04V01”、“M04V02”、“M04V03”];
风险值月份=[月1、月2、月3、月4];
风险值响应=[“1”、“2”、“3”、“4”、“5”];
let图;
函数设置(){
createCanvas(400250);
图表=新图表(月份、回复、200、300);
}
函数绘图(){
背景(50,50,150);
graph.show();
graph.showData();
}
类图{
构造函数(扩展数据、yData、高度、宽度){
this.xData=xData;
this.yData=yData;
高度=高度;
这个。宽度=宽度;
this.xStart=60;
this.yStart=window.height-30;
this.xTicks=this.xData.map((e,i)=>{
返回映射(i,0,this.xData.length,this.xStart,this.width);
})
this.yTicks=this.yData.map((e,i)=>{
返回映射(i,0,this.yData.length,this.yStart-this.height,this.yStart);
})
this.xSpace=this.xTicks[0];
}
show(){
这个.xAxis();
这是yAxis();
}
xAxis(){
中风(255);
冲程重量(1);
行(this.xStart、this.yStart、this.xStart+this.width、this.yStart);
冲程重量(2)
this.xTicks.forEach((x,i)=>{
笔划(255)
行(x+this.xSpace,this.yStart+2,x+this.xSpace,this.yStart-2)
noStroke()
填充(255);
text(`m${i+1}`,x+this.xSpace-7,this.yStart+14)
})
}
雅克西斯(){
中风(255);
冲程重量(1);
行(this.xStart、this.yStart、this.xStart、this.yStart-this.height);
冲程重量(2)
this.yTicks.forEach((y,i)=>{
笔划(255)
行(this.xStart-2,this.yStart-y,this.xStart+2,this.yStart-y);
noStroke()
填充(255);
文本大小(10)
text(this.yData[i],this.xStart-15,this.yStart-y+3)
})
}
showData(){
this.xData.forEach((arr,i)=>{
arr.forEach((项目,j)=>{
noFill();
中风(255);
rect(this.xTicks[i]+this.xSpace-5,this.yStart-this.yTicks[j]-5,10,10)
})
})
}
}

你得到了什么错误?相关:我没有得到任何错误我只是想在图形上正确显示元素数组..基本上,假设数组中的第一个元素有两个值,我想画一个在另一个上面的矩形,然后通过改变位置继续数组中的下一个元素..M函数(方法)中的矿石信息addValues位于javascript文件的末尾。抱歉,您的问题不太清楚。您发布的代码已经使用嵌套的
for
循环来迭代数组中的所有元素。您可以发布一个简化的而不是完整的程序吗?我已经编辑了我的问题,请告诉我现在是否更清楚谢谢,这是一个这在我的脑子里有更好的解释;)祝你有愉快的一天,很高兴我能帮忙。