我需要将相位的名称放在y轴上,时间放在x轴上,或者类似的东西。但我找不到任何具有y轴的字符串的组件,只有数字(例如折线图)。 如果有人能给我一个想法选择哪个图表以及哪些属性,我将不胜感激。
答案 0 :(得分:0)
对于y轴,您可以使用带有jqplot的CategoryAxisRenderer的primefaces折线图,对于x轴,可以使用DateAxisRenderer。
您的CartesianChartModel应该像这样构建:
对于阶段号p(int):
chartModel.set(startTimestamp,p);
chartModel.set(endTimestamp,p);
对于primefaces折线图,您需要创建一个扩展器,您可以在其中设置轴的渲染器,y轴刻度(相位名称数组),x轴刻度间隔,minX,maxX和x的格式字符串轴蜱。
function extender() {
this.cfg.axes = {
xaxis: {
renderer: $.jqplot.DateAxisRenderer,
rendererOptions: {
tickRenderer: $.jqplot.CanvasAxisTickRenderer
},
tickOptions: {
formatString: '%H:%M',
formatter: myFormatter
},
min: myMinXTimestamp,
max: myMaxXTimestamp,
tickInterval: 3600000, //1 hour
autoscale: false
},
yaxis: {
renderer: $.jqplot.CategoryAxisRenderer,
ticks: ['Pahse 1','Phase 2','Phase 3'],
labelRenderer: $.jqplot.CanvasAxisLabelRenderer
}
};
this.cfg.highlighter = {
show: true,
formatString: '%s'
};
}
定义myFormatter函数:
function myFormatter(format, val) {
return $.jsDate.strftime(val, format);
};
最后是你的线图组件:
<p:lineChart id="chart" value="#{chartModel}" extender="extender"/>