動的に生成されたグラフをエクスポートしようとしていますが、エクスポートされないものがあることに気付きました。たとえば、私のチャートには、表示されているデータに応じて動的なPlotBandsがあります。
グラフを作成するときは、ドキュメントの読み込み時にすぐにグラフを生成する、すべての優れたHighChartの例の標準コードレイアウトに従いました。その後、コードの後半で、Ajax呼び出しを使用してデータをロードし、タイトル、プロットバンド、カスタムテキストなどを変更します。
問題は、最初のグラフの読み込み後にグラフで変更されたものが画像やPDFにエクスポートされないことです。私のPlotBandsはAjax呼び出し中に追加されました。それらは、上に構築されたチャートオブジェクトに含めることができませんでしたdocument.load()
。そのため、HighChartsではそれらは都合よく無視されました。
私のグラフでは、さまざまなサイトでの24時間のエネルギー使用量を示したいと思います。ユーザーは、さまざまな日とさまざまなサイトを選択できます。稼働時間を強調するために必要なプロットバンドと各サイトには、データがロードされる異なる稼働時間があります。また、チャートのタイトルにはサイト名が表示され、サブタイトルには平方フィートが表示されます。
さらに、私のコードは、HighChartsレンダラーtext()
コマンドを使用して、グラフの下部にカスタムテキストを描画します。
かろうじて機能するエクスポートのコードは次のようになります。
var chart;
$(document).ready(function() {
chart = new Highcharts.Chart({
chart: {
renderTo: "ChartContainer",
type: "line",
title: { text: null },
subtitle: { text: null }
}
}
});
function UpdateChart() {
$.ajax({
url: "/my/url.php",
success: function(json) {
chart.addSeries(json[1]);
chart.addSeries(json[2]);
chart.setTitle(json[0].title, json[0].subtitle);
chart.xAxis[0].addPlotBand({ color: "#FCFFB9", from: json[0].OpenInterval, to: json[0].CloseInterval, label: { text: "Operating Hours", verticalAlign: "bottom", y: -5, style: { fontSize: "8pt", color: "gray" } } });
chart.renderer.text("Custom Text", 50, 100);
}
});
}
残念ながら、ユーザーがグラフをエクスポートすると、タイトル、プロットバンド、および「カスタムテキスト」は表示されません。