p:chart 带日期时间轴
p:chart with DateTime axis
我正在尝试使用 Primefaces 5.1 的组件 <p:chart>
创建折线图。
而且我需要X轴显示时间。像这样:
但仅针对旧版本的文档。
我发现了几件事:
- Customize primefaces chart
- http://forum.primefaces.org/viewtopic.php?f=3&t=23891&p=78637#p78637
但是在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}" />
我正在尝试使用 Primefaces 5.1 的组件 <p:chart>
创建折线图。
而且我需要X轴显示时间。像这样:
但仅针对旧版本的文档。
我发现了几件事:
- Customize primefaces chart
- http://forum.primefaces.org/viewtopic.php?f=3&t=23891&p=78637#p78637
但是在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}" />