3

PrimeFaces 3.4 の折れ線グラフでエクステンダー属性を使用しようとしています。エクステンダーを使用して、x 軸を日付/時刻の値でフォーマットする必要があります。デフォルトのPF lineChart属性を使用すると、データポイントが多すぎてラベルが上書きされるため、エクステンダーなしでこれを行うことはオプションではありません。以下に示すようにコードをセットアップすると、値が表示されていない x 軸が表示されます。私が見ることができるのはx軸だけです。詳細については、写真を参照してください。x 軸が hh:mm 形式で時間を表示するように設定するにはどうすればよいですか?

チャート表示

XHTML コード

<script type="text/javascript" src="#{request.contextPath}/js/plugins/jqplot.dateAxisRenderer.min.js"></script>
<script type="text/javascript" src="#{request.contextPath}/js/plugins/jqplot.canvasAxisTickRenderer.min.js"></script>
<script type="text/javascript">
 function loginRateChartExt() {
  this.cfg.axes = { 
   yaxis: {
    numberTicks: 10,
    label: 'Logins per minute ->',
    labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
    labelOptions: { fontFamily: 'Verdana', fontSize: '8pt' },
   },
   xaxis: { 
    renderer: $.jqplot.DateAxisRenderer,
    rendererOptions: { tickRenderer:$.jqplot.CanvasAxisTickRenderer },
    tickOptions: { formatString:'%H:%M' },
    label: 'Time of day ->',
    labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
    labelOptions: { fontFamily: 'Verdana', fontSize: '8pt' }
   }
  }; 
 }
</script>
<p:lineChart id="loginRateChart" value="#{loginRateBean.chartModel}" extender="loginRateChartExt" />

ビーンコード

for(int i = 0; i < workerBean.getSize(); i++) { // worker bean has the data
  for (String key : workerBean.getValueKeys()) { // each key refers to a series
    // chartSeriesMap is a map that contains all the series
    // workerBean.getKeyAt(i) returns Date
    // workerBean.getValueAt(i, key) returns a Number
    chartSeriesMap.get(key).set(workerBean.getKeyAt(i), workerBean.getValueAt(i, key).floatValue());
  }
}
for (String string : workerBean.getValueKeys()) {
 chartModel.addSeries(chartSeriesMap.get(string));
}
4

2 に答える 2

0

エクステンダーに min 属性を追加すると、表示の問題が解決するようです。これは、stackoverflow に関する別の質問 (以下のリンク) で見ました。これがこれに対する回避策であるかどうかは誰にもわかりますか?

jqPlot DateAxis tickIntervalが機能しない

于 2012-09-28T17:08:19.160 に答える