【发布时间】:2018-09-23 20:54:40
【问题描述】:
我有以下数组,希望使用 p5js (javascript) 显示为堆积条形图。
您可以在下面看到一个 arrayOfMonths (month1, month2,...),它将显示在堆积条形图的 X 轴上。现在,每个月都有许多其他(0 到多个)元素。这些是我想在 Y 轴上显示的元素,例如,month1 有 2 个元素,我想在 X 轴上的第一个元素上创建两个矩形,依此类推,如下所示:
4| ▭
3| ▭ ▭
2| ▭ ▭ ▭
1| ▭ ▭ ▭ ▭
▬▬▬▬▬▬▬▬▬▬▬▬▬▬
m1 m2 m3 m4
如果您知道如何处理二维数组,请告诉我:) 谢谢...
/* Needed Variables Declaration */
var month1 = ["M01V01","M01V02"];
var month2 = ["M02V01","M02V02","M02V03","M02V04"];
var month3 = ["M03V01"];
var month4 = ["M04V01","M04V02","M04V03"];
var arrayOfMonths = [month1,month2,month3,month4];
var arrayOfResponses = ["1", "2", "3","4","5"];
function addValues(){
var locX = canvasWidth-(canvasWidth-125);
var locY = canvasHeight-25;
var barWidth = 50;
var barData = canvasHeight/(numOfResponses+2);
for(var x=0; x<arrayOfMonths.length; x++){
/* Draw Stack Bars (rectangles) */
for(var y=0; y<arrayOfMonths[x].length; y++){
/* ADD TEXT TO X AXIS */
if(y<=x){
locX = canvasWidth-(canvasWidth-125);
locY -= 125;
text(arrayOfMonths[x][y], locX, locY);
fill(random(255),random(255),random(255));
rect(locX, locY, barWidth, barData);
}
// locX+=canvasWidth/(numOfMonths+1);
locX+=100;
//locY -= 150;
}
//locX = canvasWidth-(canvasWidth-125);
//locY = canvasHeight-210;
}
}
【问题讨论】:
-
你遇到了什么错误?
-
我没有收到任何错误我只想在图表上正确显示元素数组。基本上,假设数组中的第一个元素有两个值,我想绘制矩形一个在彼此之上,然后通过更改位置继续数组中的下一个元素。更多信息在 javascript 文件末尾的函数(方法)addValues 中。
-
抱歉,您的问题还不清楚。您发布的代码已经使用嵌套的
for循环来迭代数组中的所有元素。您能否发布一个简化的minimal reproducible example 而不是您的完整程序? -
我已经编辑了我的问题,如果现在更清楚请告诉我
标签: javascript html arrays multidimensional-array p5.js