91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序開發中如何使用canvas繪制坐標圖

發布時間:2022-03-15 11:48:16 來源:億速云 閱讀:695 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“微信小程序開發中如何使用canvas繪制坐標圖”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“微信小程序開發中如何使用canvas繪制坐標圖”這篇文章吧。


1、線圖


function draw(data, ctx) {  var width, height = 300, ratioX, ratioY, maxY, stepY;  var newArr = new Array();  //-------- 數據處理 -----------
  if (data.time == null) {return;
  }  if (data.type == 'day' || data.type == 'month') {var timeList = new Array();for (var i = 0; i < data.time.length; i++) {      if ((i % 4 == 0 && data.type == 'day') || (i % 5 == 0 && data.type == 'month')) {
        timeList.push(data.time[i].substr(data.time[i].length - 5, 5));
      }
    }
    data.time = timeList;
  } else {for (var i = 0; i < data.time.length; i++) {
      data.time[i] = data.time[i].substr(data.time[i].length - 5, 5);
    }
  }//這里是后臺返回的數據,處理后展示在頁面
  // ---------- 獲取屏寬 ---------------
  wx.getSystemInfo({
    success: function (res) {
      width = res.windowWidth;
    }
  })
  ratioX = parseInt((width - 60) / (data.time.length - 1));
  ratioY = parseInt((height - 45) / 6);  //求value的最大值
  for (var i = 0; i < data.list.length; i++) {
    newArr.push(Math.max.apply(Math, data.list[i].value));
  }
  maxY = Math.max.apply(Math, newArr);
  stepY = Math.ceil(maxY / 4);  // ------- 繪制坐標線 ------
  ctx.beginPath();  for (var i = 0; i < 5; i++) {
    ctx.save();
    ctx.setStrokeStyle("#dde2e3");
    ctx.setFillStyle("#848198");
    ctx.setFontSize('8');
    ctx.fillText(i * stepY, 0, 220 - i * ratioY);
    ctx.moveTo(22, 215 - i * ratioY);
    ctx.lineTo((width - 30), 215 - i * ratioY);
    ctx.stroke();
    ctx.restore();
  }  //--------- 繪制圖例 ------------
  for (var i = 0; i < data.list.length; i++) {
    ctx.save();
    ctx.translate(15, 215);
    ctx.beginPath();
    ctx.setStrokeStyle(color[i]);
    ctx.setLineCap("round");
    ctx.setLineWidth(10);
    ctx.moveTo(22 + i * 38, 46);
    ctx.lineTo(38 + i * 38, 46);
    ctx.stroke();
    ctx.setFontSize('8');
    ctx.setFillStyle("#000000");
    ctx.fillText(data.list[i].title, 21 + i * 38, 66);
    ctx.restore();
  }  // ------ 繪制橫坐標 ------
  for (var i = 0; i < data.time.length; i++) {
    ctx.save();
    ctx.translate(15, 215);
    ctx.setFontSize('8');
    ctx.setFillStyle('#848198');
    ctx.fillText(data.time[i], i * (ratioX), 20);
    ctx.restore();
  }  //------ 繪制折線 ---------
  for (var i = 0; i < data.list.length; i++) {
    ctx.beginPath();
    ctx.save();
    ctx.translate(22, 215);
    ctx.setStrokeStyle(color[i]);
    ctx.moveTo(0, -data.list[i].value[0] / (stepY / ratioY));//console.log(data.list[i].value);for (var j = 0; j < data.list[i].value.length; j++) {
      ctx.lineTo(j * (parseFloat((width - 53) / (data.list[i].value.length - 1))), -(data.list[i].value[j] / (stepY / ratioY)));
      ctx.stroke();
    }
    ctx.restore();
  }
  ctx.draw();
}

2、餅圖

function draw(data, ctx) {  var start = 0,x,y = 140,r = 90,total=0, end,width;  var ratio = new Array();
  wx.getSystemInfo({success: function (res) {
      width = res.windowWidth;
    }
  });
  x = width / 2 - 15;  for(var i=0;i<data.length;i++){
    total += data[i].num;
  }  for (var i = 0; i < data.length; i++) {
    ratio.push(data[i].num / total);
  }  // -------- 繪制餅圖 --------------------
  for (var i = 0; i < data.length; i++) {
    end = start + Math.PI * 2 * ratio[i];
    ctx.save();
    ctx.translate(x, y);
    ctx.setFontSize("8");
    ctx.setFillStyle(color[i]);
    ctx.setTextAlign("center");
    ctx.setTextBaseline("middle");
    ctx.fillText(data[i].name + ' ' + (ratio[i] * 100).toFixed(2) + '%', Math.cos((end+start)/2)* 120, Math.sin((end+start)/2)* 120);
    ctx.restore();
    ctx.save();
    ctx.beginPath();
    ctx.setFillStyle(color[i]);
    ctx.moveTo(x, y);
    ctx.arc(x, y, r, start, end, false);
    ctx.fill();
    ctx.restore();
    start = end;
  }  // -------- 餅心 ---------------
  ctx.save();
  ctx.beginPath();
  ctx.moveTo(x, y);
  ctx.arc(x, y, 50, 0, Math.PI * 2);
  ctx.setFillStyle("#ffffff");
  ctx.fill();
  ctx.restore();
  ctx.draw();
}

3、柱狀圖

function draw(data, ctx) {  var width,height = 260;  var newArr = new Array();
  wx.getSystemInfo({success: function (res) {
      width = res.windowWidth;
    }
  })  var ratioX = (width - 55) / data.length;  var ratioY = parseInt((height - 45) / 5);  //求NUM的最大值
  for (var i = 0; i < data.length; i++) {
    newArr.push(data[i].num);
  }  var maxY = Math.max.apply(Math, newArr);  var stepY = Math.ceil(maxY / 4);  // ------- 繪制坐標線 ------
  ctx.beginPath();  for (var i = 0; i < 5; i++) {
    ctx.save();
    ctx.setStrokeStyle("#dde2e3");
    ctx.setFillStyle("#848198");
    ctx.setFontSize('8');
    ctx.moveTo(15, 215 - i * ratioY);
    ctx.lineTo(380, 215 - i * ratioY);
    ctx.fillText(i * stepY, 0, 220 - i * ratioY);
    ctx.stroke();
    ctx.restore();
  }

 

以上是“微信小程序開發中如何使用canvas繪制坐標圖”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

喀喇| 渭南市| 乐山市| 商南县| 德庆县| 辽中县| 永年县| 上林县| 陇西县| 宜都市| 鄯善县| 富裕县| 浦北县| 丹寨县| 吴旗县| 修文县| 昭苏县| 五峰| 姚安县| 库车县| 白银市| 宝清县| 赣榆县| 喀喇沁旗| 普宁市| 阿拉尔市| 临夏市| 日土县| 蓬莱市| 乌拉特中旗| 安国市| 广河县| 全南县| 行唐县| 盐亭县| 青冈县| 济源市| 普洱| 鄂托克前旗| 星座| 辽宁省|