我应该选择哪个主要图表来展示项目的各个阶段

时间:2013-02-12 23:01:24

标签: string charts primefaces project-management axis

我需要将相位的名称放在y轴上,时间放在x轴上,或者类似的东西。但我找不到任何具有y轴的字符串的组件,只有数字(例如折线图)。 如果有人能给我一个想法选择哪个图表以及哪些属性,我将不胜感激。

1 个答案:

答案 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"/>