/* * Created on 2009-9-7 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package com.Peter.jfreechart; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; import org.jfree.chart.*; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.entity.StandardEntityCollection; import org.jfree.chart.labels.PieToolTipGenerator; import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; import org.jfree.chart.labels.StandardPieSectionLabelGenerator; import org.jfree.chart.labels.StandardPieToolTipGenerator; import org.jfree.chart.labels.XYItemLabelGenerator; import org.jfree.chart.plot.PiePlot; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PiePlot3D; import com.peter.jfreechart.Util; import java.awt.Font; import java.awt.Color; import java.awt.RenderingHints; import java.io.File; import java.io.FileOutputStream; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.HashMap; import java.util.Iterator; import org.jfree.chart.servlet.ServletUtilities; import org.jfree.chart.title.TextTitle; import org.jfree.chart.urls.StandardCategoryURLGenerator; import org.jfree.chart.urls.StandardPieURLGenerator; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.xy.*; import org.jfree.data.time.*; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.chart.renderer.category.BarRenderer3D; import org.jfree.chart.renderer.category.CategoryItemRenderer; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.ui.*; /** * @author Peter Ke * * TODO To change the template for this generated type comment go to Window - * Preferences - Java - Code Style - Code Templates */ public class TestMain { public static void main(String[] args) { tryPie(); tryCategory(); // tryLineChart(); tryLineChart2(); tryTimeChart(); //picGeneratorTry(); //picGenerator2(); //JfreeChartOne one = new JfreeChartOne("CityInfoPort公司组织架构图"); //one.pack(); //one.setVisible(true); } static public void tryPie() { // 创建饼图数据对象 DefaultPieDataset dfp = new DefaultPieDataset(); dfp.setValue("manager", 25); dfp.setValue("市场人员", 35); dfp.setValue("开发人员", 20); dfp.setValue("后勤人员", 5); dfp.setValue("财务人员", 15); //Create JFreeChart object JFreeChart a = ChartFactory.createPieChart3D("WXIC公司组织架构图", dfp, true, true, true); //a = Util.configFont(a); //title title font /* * Font font=new Font("SimSun", Font.BOLD, 12); TextTitle txtTitle = * null; txtTitle = a.getTitle(); txtTitle.setFont(font); //bg color * a.setBackgroundPaint(new Color(11,95,141)); //label font PiePlot * pieplot = (PiePlot) a.getPlot(); pieplot.setLabelFont(new * Font("SimSun", 0, 12));//楼主这边设了什么字体 pieplot.setNoDataMessage("No data * available"); pieplot.setCircular(false); pieplot.setLabelGap(0.02D); * //item font a.getLegend().setItemFont(font); * //pieplot.setLabelFont(new Font("SimSun", Font.PLAIN, 12)); */ a = Util.configPiePlotFont(a); PiePlot pieplot = (PiePlot)a.getPlot(); // render PieToolTipGenerator tp = new PieToolTipGenerator(){ public String generateToolTip(PieDataset arg0, Comparable arg1) { return String.valueOf(arg0.getValue(arg1)); } }; StandardPieToolTipGenerator stp = new StandardPieToolTipGenerator(); pieplot.setToolTipGenerator(stp); //pieplot.setLabelLinksVisible(true); //pieplot.setSectionOutlinesVisible(true); //pieplot.setSimpleLabels(true); //render setSection(pieplot); setLabel(pieplot); setNoDataMessage(pieplot); setNullAndZeroValue(pieplot); ChartFrame frame = new ChartFrame("CityInfoPort公司组织架构图 ", a, true); frame.pack(); //frame.setFont(font); frame.setVisible(true); } static public void tryCategory() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(190, "北京", "苹果"); dataset.addValue(120, "上海", "苹果"); dataset.addValue(140, "广州", "苹果"); dataset.addValue(270, "北京", "梨子"); dataset.addValue(240, "上海", "梨子"); dataset.addValue(210, "广州", "梨子"); dataset.addValue(345, "北京", "葡萄"); dataset.addValue(380, "上海", "葡萄"); dataset.addValue(370, "广州", "葡萄"); dataset.addValue(440, "北京", "香蕉"); dataset.addValue(420, "上海", "香蕉"); dataset.addValue(487, "广州", "香蕉"); dataset.addValue(576, "北京", "荔枝"); dataset.addValue(545, "上海", "荔枝"); dataset.addValue(553, "广州", "荔枝"); JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", "水果", "水果", dataset, PlotOrientation.VERTICAL, true, true, true); chart = Util.configCategoryPlotFont(chart); CategoryPlot plot = chart.getCategoryPlot(); //peter add item info in pic CategoryAxis domainAxis = plot.getDomainAxis(); //domainAxis.setVerticalCategoryLabels(false); plot.setDomainAxis(domainAxis); ValueAxis rangeAxis = plot.getRangeAxis(); // 设置最高的一个 Item 与图片顶端的距离 rangeAxis.setUpperMargin(0.15); // 设置最低的一个 Item 与图片底端的距离 rangeAxis.setLowerMargin(0.15); plot.setRangeAxis(rangeAxis); BarRenderer3D renderer = new BarRenderer3D(); renderer.setBaseOutlinePaint(Color.BLACK); // 设置 Wall 的颜色 renderer.setWallPaint(Color.gray); // 设置每种水果代表的柱的颜色 renderer.setSeriesPaint(0, new Color(0, 0, 255)); renderer.setSeriesPaint(1, new Color(0, 100, 255)); renderer.setSeriesPaint(2, Color.GREEN); // 设置每个地区所包含的平行柱的之间距离 renderer.setItemMargin(0.1); // 显示每个柱的数值,并修改该数值的字体属性 renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setItemLabelsVisible(true); //renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator()); plot.setRenderer(renderer); //end peter add item info in pic ChartFrame frame = new ChartFrame("水果产量图 ", chart, true); frame.pack(); frame.setVisible(true); } static public void tryLineChart() { String series1 = "北京 Fab4"; String series2 = "武汉 Fab12"; String series3 = "上海 Fab8"; String type1 = "2001"; String type2 = "2002"; String type3 = "2003"; String type4 = "2004"; String type5 = "2005"; String type6 = "2006"; String type7 = "2007"; String type8 = "2008"; DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset(); defaultcategorydataset.addValue(1.0D, series1, type1); defaultcategorydataset.addValue(4D, series1, type2); defaultcategorydataset.addValue(3D, series1, type3); defaultcategorydataset.addValue(5D, series1, type4); defaultcategorydataset.addValue(5D, series1, type5); defaultcategorydataset.addValue(7D, series1, type6); defaultcategorydataset.addValue(7D, series1, type7); defaultcategorydataset.addValue(8D, series1, type8); defaultcategorydataset.addValue(5D, series2, type1); defaultcategorydataset.addValue(7D, series2, type2); defaultcategorydataset.addValue(6D, series2, type3); defaultcategorydataset.addValue(8D, series2, type4); defaultcategorydataset.addValue(4D, series2, type5); defaultcategorydataset.addValue(4D, series2, type6); defaultcategorydataset.addValue(2D, series2, type7); defaultcategorydataset.addValue(1.0D, series2, type8); defaultcategorydataset.addValue(4D, series3, type1); defaultcategorydataset.addValue(3D, series3, type2); defaultcategorydataset.addValue(2D, series3, type3); defaultcategorydataset.addValue(3D, series3, type4); defaultcategorydataset.addValue(6D, series3, type5); defaultcategorydataset.addValue(3D, series3, type6); defaultcategorydataset.addValue(4D, series3, type7); defaultcategorydataset.addValue(3D, series3, type8); JFreeChart jfreechart = ChartFactory .createLineChart("折线图 Demo 1", "Type", "Value", defaultcategorydataset, PlotOrientation.VERTICAL, true, true, false); CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot(); categoryplot.setBackgroundPaint(Color.lightGray); categoryplot.setRangeGridlinePaint(Color.white); jfreechart = Util.configCategoryPlotFont(jfreechart); ChartFrame frame = new ChartFrame("折线图 ", jfreechart, true); frame.pack(); frame.setVisible(true); } public static void tryLineChart2() { XYSeries xyseries = new XYSeries("First"); //先产生XYSeries 对象 xyseries.add(1.0D, 1.0D); xyseries.add(2D, 4D); xyseries.add(3D, 3D); xyseries.add(4D, 5D); xyseries.add(5D, 5D); xyseries.add(6D, 7D); xyseries.add(7D, 7D); xyseries.add(8D, 8D); XYSeries xyseries1 = new XYSeries("Second"); xyseries1.add(1.0D, 5D); xyseries1.add(2D, 7D); xyseries1.add(3D, 6D); xyseries1.add(4D, 8D); xyseries1.add(5D, 4D); xyseries1.add(6D, 4D); xyseries1.add(7D, 2D); xyseries1.add(8D, 1.0D); XYSeries xyseries2 = new XYSeries("Third"); xyseries2.add(3D, 4D); xyseries2.add(4D, 3D); xyseries2.add(5D, 2D); xyseries2.add(6D, 3D); xyseries2.add(7D, 6D); xyseries2.add(8D, 3D); xyseries2.add(9D, 4D); xyseries2.add(10D, 3D); XYSeriesCollection xyseriescollection = new XYSeriesCollection(); //再用XYSeriesCollection添加入XYSeries 对象 xyseriescollection.addSeries(xyseries); xyseriescollection.addSeries(xyseries1); xyseriescollection.addSeries(xyseries2); JFreeChart jfreechart = ChartFactory.createXYLineChart("Line Chart Demo 2", "X", "Y", xyseriescollection, PlotOrientation.VERTICAL, true, true, false); jfreechart = Util.configXYPlotFont(jfreechart); XYPlot xyplot = jfreechart.getXYPlot(); // render XYItemRenderer xyItemRenderer = (XYItemRenderer) xyplot.getRenderer(0); xyItemRenderer.setBaseItemLabelGenerator(new XYItemLabelGenerator(){ public String generateLabel(XYDataset dataset, int series, int item) { return String.valueOf(dataset.getYValue(series,item)); } }); xyItemRenderer.setBaseItemLabelsVisible(true); xyItemRenderer.setBaseSeriesVisible(true); xyplot.setRenderer(xyItemRenderer); //render ChartFrame frame = new ChartFrame("折线图2 ", jfreechart, true); frame.pack(); frame.setVisible(true); } public static void tryTimeChart() { TimeSeries timeseries = new TimeSeries("L&G European Index Trust", Month.class); timeseries.add(new Month(2, 2001), 181.8D);//这里用的是Month.class,同样还有Day.class Year.class 等等 timeseries.add(new Month(3, 2001), 167.3D); timeseries.add(new Month(4, 2001), 153.8D); timeseries.add(new Month(5, 2001), 167.6D); timeseries.add(new Month(6, 2001), 158.8D); timeseries.add(new Month(7, 2001), 148.3D); timeseries.add(new Month(8, 2001), 153.9D); timeseries.add(new Month(9, 2001), 142.7D); timeseries.add(new Month(10, 2001), 123.2D); timeseries.add(new Month(11, 2001), 131.8D); timeseries.add(new Month(12, 2001), 139.6D); timeseries.add(new Month(1, 2002), 142.9D); timeseries.add(new Month(2, 2002), 138.7D); timeseries.add(new Month(3, 2002), 137.3D); timeseries.add(new Month(4, 2002), 143.9D); timeseries.add(new Month(5, 2002), 139.8D); timeseries.add(new Month(6, 2002), 137D); timeseries.add(new Month(7, 2002), 132.8D); TimeSeries timeseries1 = new TimeSeries("L&G UK Index Trust", Month.class); timeseries1.add(new Month(2, 2001), 129.6D); timeseries1.add(new Month(3, 2001), 123.2D); timeseries1.add(new Month(4, 2001), 117.2D); timeseries1.add(new Month(5, 2001), 124.1D); timeseries1.add(new Month(6, 2001), 122.6D); timeseries1.add(new Month(7, 2001), 119.2D); timeseries1.add(new Month(8, 2001), 116.5D); timeseries1.add(new Month(9, 2001), 112.7D); timeseries1.add(new Month(10, 2001), 101.5D); timeseries1.add(new Month(11, 2001), 106.1D); timeseries1.add(new Month(12, 2001), 110.3D); timeseries1.add(new Month(1, 2002), 111.7D); timeseries1.add(new Month(2, 2002), 111D); timeseries1.add(new Month(3, 2002), 109.6D); timeseries1.add(new Month(4, 2002), 113.2D); timeseries1.add(new Month(5, 2002), 111.6D); timeseries1.add(new Month(6, 2002), 108.8D); timeseries1.add(new Month(7, 2002), 101.6D); TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(); timeseriescollection.addSeries(timeseries); timeseriescollection.addSeries(timeseries1); timeseriescollection.setDomainIsPointsInTime(true); //domain轴上的刻度点代表的是时间点而不是时间段 JFreeChart jfreechart = ChartFactory.createTimeSeriesChart("Legal & General Unit Trust Prices", "Date", "Price Per Unit", timeseriescollection, true, true, false); jfreechart.setBackgroundPaint(Color.white); XYPlot xyplot = (XYPlot) jfreechart.getPlot(); //获得 plot : XYPlot!! xyplot.setBackgroundPaint(Color.lightGray); xyplot.setDomainGridlinePaint(Color.white); xyplot.setRangeGridlinePaint(Color.white); xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D)); xyplot.setDomainCrosshairVisible(true); xyplot.setRangeCrosshairVisible(true); //render XYItemRenderer xyItemRenderer = (XYItemRenderer) xyplot.getRenderer(0); xyItemRenderer.setBaseItemLabelGenerator(new XYItemLabelGenerator(){ public String generateLabel(XYDataset dataset, int series, int item) { return String.valueOf(dataset.getYValue(series,item)); } }); xyItemRenderer.setBaseItemLabelsVisible(true); xyItemRenderer.setBaseSeriesVisible(true); xyplot.setRenderer(xyItemRenderer); //render jfreechart = Util.configXYPlotFont(jfreechart); ChartFrame frame = new ChartFrame("时间折线图 ", jfreechart, true); frame.pack(); frame.setVisible(true); } private static PieDataset getDataSet() { DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue(" 市场前期", new Double(10)); dataset.setValue(" 立项", new Double(15)); dataset.setValue(" 计划", new Double(10)); dataset.setValue(" 需求与设计", new Double(10)); dataset.setValue(" 执行控制", new Double(35)); dataset.setValue(" 收尾", new Double(10)); dataset.setValue(" 运维", new Double(10)); return dataset; } static public void picGeneratorTry() { PieDataset dataset = getDataSet(); JFreeChart chart = ChartFactory.createPieChart3D(" 项目进度分布", // chart title dataset,// data true,// include legend true, false); PiePlot3D plot = (PiePlot3D) chart.getPlot(); // 图片中显示百分比:默认方式 //plot.setLabelGenerator(new StandardPieSectionLabelGenerator(StandardPieToolTipGenerator.DEFAULT_TOOLTIP_FORMAT)); // 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位 plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%"))); // 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例 plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})")); // 设置背景色为白色 chart.setBackgroundPaint(Color.white); // 指定图片的透明度(0.0-1.0) plot.setForegroundAlpha(1.0f); // 指定显示的饼图上圆形(false)还椭圆形(true) plot.setCircular(true); // peter invoke util to format font chart = Util.configPiePlotFont(chart); // 设置图标题的字体 Font font = new Font(" 黑体", Font.CENTER_BASELINE, 20); TextTitle title = new TextTitle(" 项目状态分布"); title.setFont(font); chart.setTitle(title); FileOutputStream fos_jpg = null; String path = "D:\\项目状态分布.jpg"; try { fos_jpg = new FileOutputStream(path); ChartUtilities.writeChartAsJPEG(fos_jpg, 1, chart, 640, 480, null); fos_jpg.close(); } catch (Exception e) { System.out.println("pic generated error occor: " + e.getMessage()); e.getStackTrace(); } System.out.println("pic generated in the following path: " + path); } public static void picGenerator2() { //Step 1 建立 Dataset 資料結構物件 HashMap datas = new HashMap(); datas.put("Java", new Long(721)); datas.put(".Net", new Long(543)); datas.put("PHP", new Long(374)); datas.put("C++", new Long(438)); datas.put("Others", new Long(424)); DefaultPieDataset dataSet = new DefaultPieDataset(); for (Iterator it = datas.keySet().iterator(); it.hasNext();) { String technology = (String) it.next(); dataSet.setValue(technology, (Long) datas.get(technology)); } //Step 3 建立 Plot 物件 PiePlot plot = new PiePlot(dataSet); plot.setInsets(new RectangleInsets(5, 5, 5, 5)); plot.setURLGenerator(new StandardPieURLGenerator("DetailBarChart.jsp", "section")); plot.setToolTipGenerator(new StandardPieToolTipGenerator()); plot.setExplodePercent(2, 0.1); //Step 4 產生 JFreeChart 物件,並設定圖表底色 JFreeChart chart = new JFreeChart("My First Pie Chart", JFreeChart.DEFAULT_TITLE_FONT, plot, true); chart.setBackgroundPaint(Color.LIGHT_GRAY); //Step 5 輸出圖表,使用 ServletUtilities 將圖表輸出後由 DisplayChart Servlet 讀取 ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection()); //peter FileOutputStream fos_jpg = null; String path = "D:\\项目状态分布.jpg"; File file = new File("D:\\项目状态分布.jpg"); try { fos_jpg = new FileOutputStream(path); ChartUtilities.saveChartAsPNG(file, chart, 640, 480, info); fos_jpg.close(); } catch (Exception e) { System.out.println("pic generated error occor: " + e.getMessage()); e.getStackTrace(); } System.out.println("pic generated in the following path: " + path); //peter //String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session); //PrintWriter writer = new PrintWriter(out); //ChartUtilities.writeImageMap(writer, filename, info,false); //writer.flush(); //String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename; } public static DefaultPieDataset createDataset() { //设置数据 DefaultPieDataset pieDataset = new DefaultPieDataset(); pieDataset.setValue("篮球火", 2.80); pieDataset.setValue("无敌珊宝妹", 3.63); pieDataset.setValue("不良笑花", 2.84); pieDataset.setValue("黑糖群侠传", null); pieDataset.setValue("命中注定我爱你", 0); return pieDataset; } public static void setSection(PiePlot pieplot) { //设置扇区颜色 pieplot.setSectionPaint("篮球火", new Color(160, 160, 255)); pieplot.setSectionPaint("无敌珊宝妹", new Color(128, 128, 223)); pieplot.setSectionPaint("不良笑花", new Color(96, 96, 191)); pieplot.setSectionPaint("命中注定我爱你", new Color(64, 64, 128)); //设置扇区分离显示 pieplot.setExplodePercent("篮球火", 0.2D); //设置扇区边框不可见 pieplot.setSectionOutlinesVisible(false); } public static void setLabel(PiePlot pieplot) { //设置扇区标签显示格式:关键字:值(百分比) pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator( "{0}:{1}({2} percent)")); //设置扇区标签颜色 pieplot.setLabelBackgroundPaint(new Color(220, 220, 220)); pieplot.setLabelFont((new Font("宋体", Font.PLAIN, 12))); } public static void setNoDataMessage(PiePlot pieplot) { //设置没有数据时显示的信息 pieplot.setNoDataMessage("无数据"); //设置没有数据时显示的信息的字体 pieplot.setNoDataMessageFont(new Font("宋体", Font.BOLD, 14)); //设置没有数据时显示的信息的颜色 pieplot.setNoDataMessagePaint(Color.red); } public static void setNullAndZeroValue(PiePlot piePlot) { //设置是否忽略0和null值 piePlot.setIgnoreNullValues(true); piePlot.setIgnoreZeroValues(true); } }
vutil 代码如下:
/* * Created on 2009-9-7 */ package com.peter.jfreechart; import java.awt.Color; import java.awt.Font; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PiePlot; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.category.CategoryItemRenderer; import org.jfree.chart.title.TextTitle; /** * @author E000323 */ public class Util { static public JFreeChart configCategoryPlotFont(JFreeChart chart){ // 配置字体 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 , 25) ; // 图片标题 CategoryPlot plot = chart.getCategoryPlot();// 图形的绘制结构对象 // 图片标题 chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont)); // 底部 chart.getLegend().setItemFont(kfont); // X 轴 CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setLabelFont(xfont);// 轴标题 domainAxis.setTickLabelFont(xfont);// 轴数值 domainAxis.setTickLabelPaint(Color.BLUE) ; // 字体颜色 domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 横轴上的label斜显示 // Y 轴 ValueAxis rangeAxis = plot.getRangeAxis(); rangeAxis.setLabelFont(yfont); rangeAxis.setLabelPaint(Color.BLUE) ; // 字体颜色 rangeAxis.setTickLabelFont(yfont); //item //CategoryItemRenderer itemRender = plot.getRenderer(); //itemRender.setBaseItemLabelsVisible(true); //itemRender.setBaseItemLabelFont(xfont); return chart; } static public JFreeChart configPiePlotFont(JFreeChart chart){ // 配置字体 Font labelFont = new Font("宋体",Font.PLAIN,12) ;// label Font itemFont = new Font("宋体",Font.PLAIN,12) ;// item Font titleFont = new Font("隶书", Font.BOLD , 25) ; // 图片标题 PiePlot pieplot = (PiePlot) chart.getPlot();// 图形的绘制结构对象 // 图片标题 chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont)); // 底部 chart.getLegend().setItemFont(itemFont); // label pieplot.setLabelFont(labelFont); return chart; } static public JFreeChart configXYPlotFont(JFreeChart chart){ // 配置字体 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 , 25) ; // 图片标题 XYPlot plot = chart.getXYPlot();// 图形的绘制结构对象 // 图片标题 chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont)); // 底部 chart.getLegend().setItemFont(kfont); // X 轴 ValueAxis domainAxis = plot.getDomainAxis(); domainAxis.setLabelFont(xfont);// 轴标题 domainAxis.setTickLabelFont(xfont);// 轴数值 domainAxis.setTickLabelPaint(Color.BLUE) ; // 字体颜色 //domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); //domainAxis.setLabelAngle(CategoryLabelPositions.UP_45) ; // 横轴上的label斜显示 // Y 轴 ValueAxis rangeAxis = plot.getRangeAxis(); rangeAxis.setLabelFont(yfont); rangeAxis.setLabelPaint(Color.BLUE) ; // 字体颜色 rangeAxis.setTickLabelFont(yfont); return chart; } }