p:chart 带日期时间轴

p:chart with DateTime axis

我正在尝试使用 Primefaces 5.1 的组件 <p:chart> 创建折线图。

而且我需要X轴显示时间。像这样:

但仅针对旧版本的文档。

我发现了几件事:

但是在5.1版本中没有这样的标签<p:lineChart>,连属性extender="".

也没有

我根据展示柜创建了图表:

但是这个例子没有多大帮助,因为它只处理日期。复杂的是字符串。我需要时间。

我想知道是否有人已经在较新版本的 Primefaces 中创建了类似的东西。

编辑:

再搜索一下,我发现了这个主题:

我使用了上面提到的例子,我可以让它工作。

据我所见,当它是 DateAxis 时,需要设置 axis.setMax()。最后看起来像这样:

它按我的需要工作,但有两件事我不明白:

首先:之所以要设置axis.setMax().

其二:axis.setTickFormat("%H:%#M:%S")中使用的这个模式是什么?

好的,我想现在我找到了一个可以接受的解决方案。

图表的最初问题是 axis.setMax()

axis.setTickFormat 中使用的模式是:

Code    Result                  Description
            == Years ==
%Y      2008                Four-digit year
%y      08                  Two-digit year
            == Months ==
%m      09                  Two-digit month
%#m     9                   One or two-digit month
%B      September           Full month name
%b      Sep                 Abbreviated month name
            == Days ==
%d      05                  Two-digit day of month
%#d     5                   One or two-digit day of month
%e      5                   One or two-digit day of month
%A      Sunday              Full name of the day of the week
%a      Sun                 Abbreviated name of the day of the week
%w      0                   Number of the day of the week (0 = Sunday, 6 = Saturday)
%o      th                  The ordinal suffix string following the day of the month
            == Hours ==
%H      23                  Hours in 24-hour format (two digits)
%#H     3                   Hours in 24-hour integer format (one or two digits)
%I      11                  Hours in 12-hour format (two digits)
%#I     3                   Hours in 12-hour integer format (one or two digits)
%p      PM                  AM or PM
            == Minutes ==
%M      09                  Minutes (two digits)
%#M     9                   Minutes (one or two digits)
            == Seconds ==
%S      02                  Seconds (two digits)
%#S     2                   Seconds (one or two digits)
%s      1206567625723       Unix timestamp (Seconds past 1970-01-01 00:00:00)
            == Milliseconds ==
%N      008                 Milliseconds (three digits)
%#N     8                   Milliseconds (one to three digits)
            == Timezone ==
%O      360                 difference in minutes between local time and GMT
%Z      Mountain Standard Time  Name of timezone as reported by browser
%G      -06:00              Hours and minutes between GMT
            == Shortcuts ==
%F      2008-03-26          %Y-%m-%d
%T      05:06:30            %H:%M:%S
%X      05:06:30            %H:%M:%S
%x      03/26/08            %m/%d/%y
%D      03/26/08            %m/%d/%y
%#c     Wed Mar 26 15:31:00 2008  %a %b %e %H:%M:%S %Y
%v      3-Sep-2008          %e-%b-%Y
%R      15:31               %H:%M
%r      3:31:00 PM          %I:%M:%S %p
            == Characters ==
%n      \n                  Newline
%t      \t                  Tab
%%      %                   Percent Symbol

型号:

private void createDateModel() {
    dateModel = new LineChartModel();
    LineChartSeries series1 = new LineChartSeries();
    series1.setLabel("Series 1");
    series1.set("2014-01-01 00:10:50", 51);
    series1.set("2014-01-01 00:10:51", 22);
    series1.set("2014-01-01 00:10:52", 65);
    series1.set("2014-01-01 00:10:53", 35);
    dateModel.addSeries(series1);
    dateModel.getAxis(AxisType.Y).setLabel("Values");
    DateAxis axis = new DateAxis("Dates");
    axis.setTickAngle(-50);
    axis.setMax("2014-01-01 00:10:56");
    axis.setTickFormat("%H:%#M:%S");
    dateModel.getAxes().put(AxisType.X, axis);
}

图表:

<p:chart type="line" model="#{controller.dateModel}" />