JFreeChart学习(二)-动态生成图表,并设置图表的字体格式,显示样式
2016-12-13 16:33
162 查看
JFreeChart动态生成图表,并设置图表的字体格式,显示样式
package jfreechart; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFrame; import javax.swing.JPanel; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.chart.title.TextTitle; import org.jfree.data.time.Day; import org.jfree.data.time.Hour; import org.jfree.data.time.Minute; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; /** * * @author {userName} * @version 1.0, 2016-12-13 * @since 1.0 */ public class TimeDynamicSeries extends JPanel { private TimeSeries appleSeries; private TimeSeries orangeSeries; public TimeDynamicSeries() { super(new BorderLayout()); appleSeries = new TimeSeries("苹果"); orangeSeries = new TimeSeries("桔子"); TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(); timeseriescollection.addSeries(appleSeries); timeseriescollection.addSeries(orangeSeries); JFreeChart timeSeriesChart = ChartFactory.createTimeSeriesChart( "时序图动态测试", "时间", "数量", timeseriescollection, true, true, false); configFont(timeSeriesChart); setXYPlot(timeSeriesChart); ChartPanel chartpanel = new ChartPanel(timeSeriesChart, true); add(chartpanel); createThread();//先生成图表,再往里面加数据 } /** * 设置图表中的字体样式 * @param timeSeriesChart */ private void configFont(JFreeChart timeSeriesChart) { Font xfont = new Font("宋体", Font.PLAIN, 12);// X轴 Font yfont = new Font("宋体", Font.PLAIN, 12);// Y轴 Font kfont = new Font("黑体", Font.PLAIN, 12);// 底部 Font titleFont = new Font("微软雅黑", Font.BOLD, 15); // 图片标题 XYPlot plot = timeSeriesChart.getXYPlot();// 图形的绘制结构对象 // 横轴标题字体 plot.getDomainAxis().setLabelFont(xfont); // 设置横轴标尺值中的字体 plot.getDomainAxis().setTickLabelFont(kfont); //横轴标注中的字体 timeSeriesChart.getLegend().setItemFont(kfont); // Y 轴 ValueAxis rangeAxis = plot.getRangeAxis(); //纵轴标题字体 rangeAxis.setLabelFont(yfont); //纵轴字体颜色 rangeAxis.setLabelPaint(Color.BLUE); //纵轴标尺中的字体 rangeAxis.setTickLabelFont(yfont); // 图片标题 timeSeriesChart.setTitle(new TextTitle(timeSeriesChart.getTitle().getText(), titleFont)); } public static void main(String[] args) { JFrame jframe = new JFrame("时序图动态测试"); TimeDynamicSeries demo = new TimeDynamicSeries(); jframe.getContentPane().add(demo, "Center"); jframe.pack(); jframe.setVisible(true); jframe.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent windowevent) { System.exit(0); } }); } private void createThread() { CodeThread codeThread = new CodeThread(); Thread t = new Thread(codeThread); t.start(); } /** * 设置图表中的曲线等 * @param timeSeriesChart */ private void setXYPlot(JFreeChart timeSeriesChart) { XYPlot plot = timeSeriesChart.getXYPlot();// 图形的绘制结构对象 plot.setDomainGridlinePaint(Color.lightGray); plot.setRangeGridlinePaint(Color.YELLOW); XYItemRenderer r = plot.getRenderer(); if (r instanceof XYLineAndShapeRenderer) { XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r; renderer.setBaseShapesVisible(true);//让每个点的图标可见 renderer.setBaseShapesFilled(false);//每个点为空心 } } /** * 动态生成数据 */ public class CodeThread implements Runnable { @Override public void run() { try { for (int i = 1; i < 60; i++) { Day day = new Day(21, 9, 2008); Hour hour22 = new Hour(22, day); Hour hour23 = new Hour(23, day); appleSeries.add(new Minute(i, hour22), 1.1); Thread.sleep(1000); appleSeries.add(new Minute(i + 1, hour22), 1.2); Thread.sleep(1000); appleSeries.add(new Minute(i + 2, hour22), 1.3); Thread.sleep(1000); orangeSeries.add(new Minute(i + 3, hour23), 1.4); Thread.sleep(1000); orangeSeries.add(new Minute(i + 4, hour23), 1.5); Thread.sleep(1000); orangeSeries.add(new Minute(i + 5, hour23), 1.6); i = i + 6; } } catch (InterruptedException ex) { Logger.getLogger(TimeDynamicSeries.class.getName()).log(Level.SEVERE, null, ex); } } } }
相关文章推荐
- java5 unix/linux 中文字体配置说明 (jfreechart 图片生成后中文显示为“口”)
- JFreeChart 典型图表生成及属性设置示例
- JFreeChart 1.0.13图表设置样式
- POI中设置Excel单元格格式样式(居中,字体,边框等)
- Flex中如何通过设置GridLines对象的horizontalAlternateFill样式交错显示LineSeries图表背景颜色的例子
- 设置HighCharts,让它生成的图表居中显示。
- TWaver HTML5学习笔记 —— 动态设置网元样式
- JFreeChart -- 时序图实例解析 -- 设置日期显示格式
- C#入门学习-----选项卡(更改显示样式、动态添加/删除、获得名称)
- JFreeChart 画饼状图 颜色 字体 样式的设置
- 使用JFreeChart生成各种样式的图表
- 让动态生成的图表以.png文件显示
- HyperLink链接动态传参数(Web.Config中设置绑定样式:格式字符串)
- 动态生成控件(CButton, CComboBox, CTreeCtrl, CListCtrl, CTabCtrl, CEdit)、字体设置、常见设置
- Java动态生成SVG饼图与JFreeChart超强效能生成SVG图表.
- C#入门学习-----菜单应用(添加剂快捷方式、设置菜单项是否可用、修改菜单字体、创建级联菜单、级联菜单的动态合并)
- WIN7在最大化和最小化时动态显示窗口/WIN7下设置Eclipse字体
- Extjs4 动态生成图表chart(从后台传数据动态显示)
- phpexcel中文教程-设置表格字体颜色背景样式、数据格式、对齐方式、添加图片、批注、文字块、合并拆分单元格、单元格密码保护
- 如何设置jfreechart周报曲线图的时间轴显示格式