/**
* PeriodAxisChart 图表
* @param ChartTitle
* @param viceTitle
* @param Xname
* @param YName
* @param xydataset
* @return
*/
public static JFreeChart createPeriodAxisChart(String ChartTitle,String viceTitle, String Xname,String YName,XYDataset xydataset)
{
Font font = new Font("宋体", Font.BOLD, 24);// 必须要指定,否则乱码
Font Lablefont = new Font("宋体", Font.BOLD, 12);
JFreeChart jfreechart = ChartFactory.createTimeSeriesChart(ChartTitle, Xname, YName, xydataset, true, true, false);
XYPlot xyplot = (XYPlot)jfreechart.getPlot();
xyplot.setDomainCrosshairVisible(true);
xyplot.setRangeCrosshairVisible(true);
XYItemRenderer xyitemrenderer = xyplot.getRenderer();
if(xyitemrenderer instanceof XYLineAndShapeRenderer)
{
XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)xyitemrenderer;
xylineandshaperenderer.setBaseShapesVisible(false);
xylineandshaperenderer.setBaseShapesFilled(true);
xylineandshaperenderer.setBaseItemLabelsVisible(true);
}
PeriodAxis periodaxis = new PeriodAxis(Xname);
periodaxis.setTimeZone(TimeZone.getTimeZone("Pacific/Auckland"));
periodaxis.setAutoRangeTimePeriodClass(org.jfree.data.time.Day.class);
PeriodAxisLabelInfo aperiodaxislabelinfo[] = new PeriodAxisLabelInfo[3];
aperiodaxislabelinfo[0] = new PeriodAxisLabelInfo(org.jfree.data.time.Day.class, new SimpleDateFormat("d"));
aperiodaxislabelinfo[1] = new PeriodAxisLabelInfo(org.jfree.data.time.Month.class, new SimpleDateFormat("MMM"), new RectangleInsets(2D, 2D, 2D, 2D), Lablefont, Color.blue, false, new BasicStroke(0.0F), Color.lightGray);
aperiodaxislabelinfo[2] = new PeriodAxisLabelInfo(org.jfree.data.time.Year.class, new SimpleDateFormat("yyyy"));
periodaxis.setLabelInfo(aperiodaxislabelinfo);
xyplot.setDomainAxis(periodaxis);
ChartUtilities.applyCurrentTheme(jfreechart);
jfreechart.getTitle().setFont(font);
jfreechart.getLegend().setItemFont(Lablefont);
xyplot.getDomainAxis().setLabelFont(Lablefont);
xyplot.getRangeAxis().setLabelFont(Lablefont);
// 设置副标题
jfreechart.addSubtitle(new TextTitle("------" + viceTitle, new Font(
"Dialog", Font.ITALIC, 12)));
periodaxis.setLabelFont(Lablefont);
aperiodaxislabelinfo[1]= new PeriodAxisLabelInfo(org.jfree.data.time.Month.class, new SimpleDateFormat("MMM"), new RectangleInsets(2D, 2D, 2D, 2D), Lablefont, Color.blue, false, new BasicStroke(0.0F), Color.lightGray);
return jfreechart;
}
效果图: