亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

圖表.js折線圖:設置價格變動時,在 x 軸上顯示最近的日期。maxTicksLimit

圖表.js折線圖:設置價格變動時,在 x 軸上顯示最近的日期。maxTicksLimit

開滿天機 2022-08-04 17:53:19
我目前正在使用圖表制作折線圖.js在過去的30年中。雖然我每年都有一個數據點,但我無法在 x 軸上為每個年份添加標簽。30年不適合那里。因此,我選擇僅列出一些年份,通過設置ticks: {    maxTicksLimit: SOME_LIMIT_I_MADE}這是我的圖表的樣子的照片最近的數據點在2020年,最老的數據點在1991年。似乎設定最早的一年就開始了規模。然后,刻度以固定的間隔向前跳躍。maxTicksLimit我真正想要的是將最近的2020年顯示在秤上(以便用戶可以看到數據是新的)。有沒有辦法讓比例尺從最大年份開始,然后從那里向后跳過(與我的圖表目前的情況相反)?謝謝!
查看完整描述

1 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

這可以通過以某種方式實現您自己的 ticks.maxTicksLimit 來解決。您必須按以下步驟操作。xAxis

  1. 將 定義為時間笛卡爾軸,該軸使用包含 和 屬性的對象將 接受 為 數據點數組。xAxisdataxy

  2. 從數據中包含的年份中生成一個數組。此數組應包含起始年份和結束年份以及兩者之間平均分布的年份(請參閱下面代碼段中的函數)。labelscreateLabels

  3. 告訴圖表.js通過定義 tick.sources:“標簽”來生成給定標簽。ticksxAxis

const data = [];

for (let year = new Date().getFullYear() - 29; year <= new Date().getFullYear(); year++) {

  data.push({

    x: year.toString(),

    y: Math.floor((Math.random() * 6) + 1)

  })

}


const maxTicksLimit = 6;

function createLabels() {

  const years = data.map(o => Number(o.x));

  const startTime = years[0];

  const endTime = years[years.length - 1];

  const tickGap = (endTime - startTime) / (maxTicksLimit - 1);

  const labels = [startTime];

  for (let i = 1; i < maxTicksLimit - 1; i++) {

    labels.push(Math.round(startTime + i * tickGap));

  }

  labels.push(endTime);

  return labels.map(l => l.toString());

}


new Chart('myChart', {

  type: 'line',

  data: {

    labels: createLabels(),

    datasets: [{

      label: 'Demo',

      fill: false,

      data: data,

      borderColor: 'blue'

    }]

  },

  options: {

    scales: {

      xAxes: [{

        type: 'time',

        time: {

          parser: 'YYYY',

          unit: 'year'

        },

        ticks: {

          source: 'labels'

        }      

      }],

      yAxes: [{

        ticks: {

          beginAtZero: true

        }

      }]

    }

  }

});

<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.bundle.min.js"></script>

<canvas id="myChart" height="80"></canvas>


查看完整回答
反對 回復 2022-08-04
  • 1 回答
  • 0 關注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號