🎨

amcharts で canvas が荒い!

2023/06/09に公開

amChartsというチャートライブラリを利用している中で、canvas周りの解像度の問題が発生したので備忘録として。

起きていること

  • iPhoneでチャートが荒い。
  • PCでは荒くない。

修正前

対応内容

amChartsではiOS15以上でcanvasのメモリ制限が課せられたことで安全な解像度に自動的にダウンするオプションがデフォルトで設定されているとのことです。このフラグを折ることで解像度のダウンが発生しなくなります。

const root = am5.Root.new("chartdiv", {
  useSafeResolution: false
});

安全な解像度
このセクションでは、useSafeResolution: boolean (default: true)の設定について説明します。

この設定は、チャートが自動的に、与えられたデバイスに対して「安全」な解像度を選択することを意味します。

例えば、iOS 15以降では、キャンバスのレンダリングにメモリ制限が課せられており、大きなタブレットや、さらに大きなAppleの携帯電話では、大きなチャートを表示すると、その制限に引っかかり、チャートが効果的に壊れてしまう可能性があることを意味します。

このようなデバイスでは、「安全な解像度」が低下し、この問題が実際のチャート設定に影響を与える可能性を最小限に抑えます。

このような解像度の低減を無効にするには、ルート要素の設定を使用することができます:

https://www.amcharts.com/docs/v5/getting-started/root-element/#Safe_resolution

修正後

Refs

https://github.com/amcharts/amcharts5/issues/747
https://www.amcharts.com/docs/v5/getting-started/root-element/#Safe_resolution

そしてそもそものcanvasの高解像度対応について勉強になった記事はこちら。

https://ics.media/entry/11020/
https://assets.ctfassets.net/z2i4e5quuqk1/4ehfthlsiER27Dyy0hpNoP/6cfac0067ab16949f001cdecbc47abb8/dist.10_kano-takeshi.pdf

Awarefy 技術ブログ

Discussion