iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0
自我挑戰組

以網頁呈現資料視覺化系列 第 12

Day12 再靠近一點點 就不閃躲

  • 分享至 

  • xImage
  •  
  • Cursor and Zoom-in

今天繼續增加圖表功能,其中兩個很常需要的功能就是游標和區域放大。Chart.js提供的外掛程式中,chartjs-plugin-crosshair包含這兩種功能,今天就來試用看看。

首先如果覺得安裝麻煩(或是像我們一樣想做綠色軟體),可以參考它範例所提供掛法:

<script src="https://cdn.jsdelivr.net/npm/moment@2.27.0/moment.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js@3.4.0/dist/chart.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-moment@0.1.1"></script>
<script src="../dist/chartjs-plugin-crosshair.js"></script>

接著主要是在plugin設定中,額外設定:

          plugins: {
            crosshair: {
              sync: {
                enabled: false
              },
            },

            tooltip: {
              animation: false,
              mode: "interpolate",
              intersect: false,
              callbacks: {
                title: function(a, d) {
                  return a[0].element.x.toFixed(2);
                },
                label: function(d) {
                  return (
                    d.chart.data.datasets[d.datasetIndex].label + ": " + d.element.y.toFixed(2)
                  );
                }
              }
            }
          },

這樣就會有垂直的cursor以及能做水平的zoom-in,我們來觀察ECG訊號:
https://ithelp.ithome.com.tw/upload/images/20210913/20141158xHlVjnrKRs.jpg
Zoom-in:
https://ithelp.ithome.com.tw/upload/images/20210913/20141158Gqc7g1DVum.jpg
但目前有兩個還需進一步處理的狀況,一是new Chart需要寫在HTML的script tag中才會有反應,原因不明,二是若未使用它所使用的css,則Reset zoom出現的位置會亂跑(若有用div包canvas目前是在左下角,而且預設的長得很醜),這部分在說明書中沒看到提及,還需進一步研究。
另外有個外掛叫chartjs-plugin-annotation,有提供zoom-in以及水平線(不可拉動,但可以隨資料自動調整,例如最大最小值),但它的說明很少而且不好掛,所以就沒做介紹。


上一篇
Day11 想要什麼隨你點
下一篇
Day13 在圖表做標記仿前朝的飄逸 就當我為highlight你伏筆
系列文
以網頁呈現資料視覺化30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言