グラフを最初に読み込んだときにテキストの幅を設定してから、サイズ変更時に再度幅を設定することができます。
chart: {
events: {
load: function() {
this.yAxis.map((axis) => {
axis.update({
title: {
style: {
width: this.plotHeight
}
}
});
});
}
}
}
plotHeight
Iは、軸のタイトルの最大幅のために用いられるグラフ描画領域の高さです。
バージョン5.0.7以降を使用している場合は、render eventを使用して、チャートの読み込みと各描画で起動することができます。私はまだバージョン4.xになっていますので、loadイベントを自分の別のイベントで使用しなければなりませんでした(私の場合、jQueryクリックによってトリガされるイベント)
楕円が必要な場合は、ハイチャートタイトルがSvgRenderer
プロトタイプにbuildText
関数にフックしてレンダリングされた後pluginでテキスト値を更新します
(function (H) {
H.wrap(H.SVGRenderer.prototype, 'buildText', customBuildTextFunc);
function customBuildTextFunc(proceed, wrapper) {
// original function
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
var yAxisClass = 'highcharts-yaxis-title';
var isYAxisTitle = wrapper.textStr
&& wrapper.element
&& wrapper.element.classList
&& wrapper.element.classList[0] === yAxisClass;
if (isYAxisTitle) {
var $container = $('<div></div>').append(wrapper.element.innerHTML);
var $tspans = $container.find('tspan');
var $first = $tspans.eq(0);
$first.append('...');
$container.empty().append($first);
wrapper.element.innerHTML = $container.html();
}
}
}(Highcharts));
私は適切な省略記号(...)を使用getSVG()
の問題を持っていたので、私はちょうど使用3つの完全な停止(私の省略記号はボックスとしてレンダリングされた..間違ったエンコーディングか何か、私は推測する)。
こんにちは、私は幅が知覚される高さにどのように変化するかを理解しています。この例では、解決されるべき問題のテキストが切り捨てられています。幅を400%に設定しても、グラフが縮小されてもそれを修正することはできません。 – bPratik
私の答えが完全に変更されました。申し訳ありませんが、明らかに私は問題を以前に得ていませんでした。 –
ありがとう、これは有望そうです。チャートのReflowオプションがtrueに設定されている場合、Reflowコールを回避することはできますか?また、再描画のように、チャートがリフローしたときに見られるイベントはありますか? – bPratik