- 浏览: 486658 次
- 性别:
- 来自: 南阳
文章分类
最新评论
-
yuanhongb:
这么说来,感觉CGI和现在的JSP或ASP技术有点像啊
cgi -
draem0507:
放假了还这么勤啊
JXL操作Excel -
chenjun1634:
学习中!!
PHP/Java Bridge -
Jelen_123:
好文章,给了我好大帮助!多谢!
hadoop安装配置 ubuntu9.10 hadoop0.20.2 -
lancezhcj:
一直用job
Oracle存储过程定时执行2种方法(转)
今天要用到jfreechart的时候到网上看自己的demo才发现,我原来的demo不知什么时候不小心删掉了!我郁闷!不过还好,在我的备份盘中又找到了一份备份资料。现在再重新更新上来!
背景图片为2006110821482378503.jpg放入d盘。
还是留个腾讯群号:72729572
一、柱图demo
import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GradientPaint; import java.awt.Image; import java.io.IOException; import java.text.DecimalFormat; import java.text.NumberFormat; import javax.imageio.ImageIO; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.annotations.CategoryAnnotation; import org.jfree.chart.annotations.XYTextAnnotation; import org.jfree.chart.axis.AxisLocation; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.axis.NumberTickUnit; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.block.BlockContainer; import org.jfree.chart.block.BorderArrangement; import org.jfree.chart.block.LabelBlock; import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; import org.jfree.chart.labels.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.IntervalMarker; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.chart.renderer.category.LineAndShapeRenderer; import org.jfree.chart.title.LegendTitle; import org.jfree.chart.title.TextTitle; import org.jfree.chart.urls.StandardCategoryURLGenerator; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.HorizontalAlignment; import org.jfree.ui.Layer; import org.jfree.ui.RectangleAnchor; import org.jfree.ui.RectangleEdge; import org.jfree.ui.RectangleInsets; import org.jfree.ui.RefineryUtilities; import org.jfree.ui.TextAnchor; import org.jfree.ui.VerticalAlignment; /** * 生成一个带有多组数据的柱图(最基础图形) * */ public class BarChartDemo1 extends ApplicationFrame { /** * */ private static final long serialVersionUID = 1L; /** * 生成柱图 * * @param title 大标题. */ public BarChartDemo1(String title) { super(title); CategoryDataset dataset = createDataset(); CategoryDataset dataset1 = createDataset1(); JFreeChart chart = createChart(title,dataset,dataset1); ChartPanel chartPanel = new ChartPanel(chart, false); chartPanel.setPreferredSize(new Dimension(500, 270)); setContentPane(chartPanel); } /** * 返回条形图所需要的数据(CategoryDataset基础数据类型). * * @return The dataset. */ private static CategoryDataset createDataset() { // 行数据名称 String series1 = "名称"; String series2 = "Second"; String series3 = "Third"; // 栏数据名称 String category1 = "栏数据"; String category2 = "Category 2"; String category3 = "Category 3"; String category4 = "Category 4"; String category5 = "Category 5"; // 详细数据 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(1.0, series1, " "); dataset.addValue(4.0, series1, ""); dataset.addValue(3.0, series1, category3); dataset.addValue(5.0, series1, category4); dataset.addValue(-5.0, series1, category5); dataset.addValue(5.0, series2, category1); dataset.addValue(7.0, series2, category1); dataset.addValue(6.0, series2, category3); dataset.addValue(8.0, series2, category4); dataset.addValue(4.0, series2, category5); dataset.addValue(4.0, series3, category1); dataset.addValue(3.0, series3, category1); dataset.addValue(2.0, series3, category3); dataset.addValue(3.0, series3, category4); dataset.addValue(6.0, series3, category5); return dataset; } /** * 返回条形图所需要的数据(CategoryDataset基础数据类型). * * @return The dataset. */ private static CategoryDataset createDataset1() { // 行数据名称 String series1 = "名称1"; String series2 = "Second1"; String series3 = "Third1"; // 栏数据名称 String category1 = "栏数据"; String category2 = "Category 2"; String category3 = "Category 3"; String category4 = "Category 4"; String category5 = "Category 5"; // 详细数据 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(11.0, series1, category1); dataset.addValue(14.0, series1, category1); dataset.addValue(13.0, series1, category3); dataset.addValue(15.0, series1, category4); dataset.addValue(-15.0, series1, category5); dataset.addValue(15.0, series2, category1); dataset.addValue(17.0, series2, category2); dataset.addValue(16.0, series2, category3); dataset.addValue(18.0, series2, category4); dataset.addValue(14.0, series2, category5); dataset.addValue(14.0, series3, category1); dataset.addValue(13.0, series3, category1); dataset.addValue(12.0, series3, category3); dataset.addValue(13.0, series3, category4); dataset.addValue(16.0, series3, category5); return dataset; } /** * 生成一个柱图图片 * * @param dataset the dataset. * * @return The chart. */ private static JFreeChart createChart(String title,CategoryDataset dataset,CategoryDataset dataset1) { // create the chart... JFreeChart chart = ChartFactory.createBarChart( title, // chart title "Category", // domain axis label "Value", // range axis label dataset, // data PlotOrientation.VERTICAL, // 生成图片方向 true, // 是否显示图例 true, // 是否显示注释 false // URLs? ); //总图片设置 //设置背景颜色的图表 GradientPaint gp = new GradientPaint(0.0f, 0.0f, Color.blue, 500.0f, 270.0f, new Color(0, 0, 64)); gp = null; chart.setBackgroundPaint(gp); //设置图片背景图片 if(gp == null){ Image image = null; try { image = ImageIO.read(new java.io.File("D:\\2006110821482378503.jpg")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } chart.setBackgroundImage(image); } //设置图片的边框是否显示 chart.setBorderVisible(true); //设置背景图片透明度(0.0~1.0) chart.setBackgroundImageAlpha(1.0f); //是否字体去锯齿 chart.setAntiAlias(true); //主标题字体设置 TextTitle text = chart.getTitle(); Font font = new Font("黑体",Font.BOLD,20); text.setFont(font); chart.setTitle(text); chart.addSubtitle(new TextTitle( "Source: http://thomas0988.iteye.com/", new Font("Dialog", Font.ITALIC, 10))); //主图片主样式实例化 CategoryPlot plot=chart.getCategoryPlot(); //设置图片的背景颜色 plot.setBackgroundPaint(Color.lightGray); //设置图片的透明度(0.0~1.0) plot.setBackgroundAlpha(1.0f); //设置x轴刻度线颜色 plot.setDomainGridlinePaint(Color.white); plot.setDomainGridlinesVisible(true); //设置y轴刻度线颜色 plot.setRangeGridlinePaint(Color.white); plot.setRangeGridlinesVisible(true); //设置柱子的透明度 plot.setForegroundAlpha(0.9f); //设置x轴显示位置 plot.setDomainAxisLocation(AxisLocation.TOP_OR_LEFT); //设置y轴显示位置 plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT); //设置横纵坐标与axises之间的间距 plot.setAxisOffset(new RectangleInsets(10.0, 10.0, 10.0, 10.0)); //建构单个特殊间隔标记 IntervalMarker target = new IntervalMarker(4.5, 7.5); //目标范围名称 target.setLabel("Target Range 目标范围"); //设置字体 target.setLabelFont(new Font("SansSerif", Font.ITALIC, 11)); //区域名称在边界位置 target.setLabelAnchor(RectangleAnchor.CENTER); //区域名称的起始位置 target.setLabelTextAnchor(TextAnchor.CENTER_RIGHT); //区域名称的颜色 target.setPaint(new Color(222, 222, 255, 128)); //区域名称的透明度 target.setAlpha(1.0f); //使区域标记有效 plot.addRangeMarker(target, Layer.FOREGROUND); //bar实例化 BarRenderer renderer = (BarRenderer) plot.getRenderer(); //设置条形图上bar是否显示背景阴影 renderer.setDrawBarOutline(false); //设置bar最大宽度百分比 renderer.setMaximumBarWidth(0.10D); //设置bar显示所有value //renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); //renderer.setBaseItemLabelsVisible(true); //实例化栏数据第几个bar显示value renderer.setSeriesItemLabelGenerator(0,new StandardCategoryItemLabelGenerator("{2}辆", NumberFormat.getNumberInstance()) ); renderer.setSeriesItemLabelFont(0, new Font("黑体",Font.BOLD,20), true); //使该设置有效 renderer.setSeriesItemLabelsVisible(0,true); // 手动设置条形图上bar设置颜色 GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 0.0f, 0.0f, new Color(0, 0, 64)); GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f, 0.0f, new Color(64, 0, 0)); GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.green, 0.0f, 0.0f, new Color(0, 64, 0)); renderer.setSeriesPaint(0, gp0); renderer.setSeriesPaint(1, gp1); renderer.setSeriesPaint(2, gp2); //bar间的宽度 renderer.setItemMargin(0); //bar阴影 renderer.setShadowVisible(false); //使设置生效 renderer.setBaseItemLabelsVisible(true); //生成url连接(没有试验成功, 好像只有在jsp页面才ok,在jsp里面有个简单demo,做数据挖掘研究用,还没有改善) renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator("http://www.yahoo.com.cn")); Font font1 = new Font("SansSerif", Font.BOLD, 12); // 添加在线用户注释 // XYTextAnnotation userAnn = new XYTextAnnotation(" 峰值时间:",10d,10d); // userAnn.setFont(font1); // userAnn.setTextAnchor(TextAnchor.HALF_ASCENT_LEFT); // plot.addAnnotation((CategoryAnnotation) userAnn,true); //设置y轴区域颜色 plot.addRangeMarker(createIntervalMarker(0, 2, Color.GREEN, "0~2"), Layer.BACKGROUND); plot.addRangeMarker(createIntervalMarker(2, 4, Color.BLACK, "2~4"), Layer.BACKGROUND); plot.addRangeMarker(createIntervalMarker(4, 6, Color.PINK, "4~6"), Layer.FOREGROUND); plot.addRangeMarker(createIntervalMarker(6, 8, Color.BLUE, "6~8"), Layer.BACKGROUND); plot.addRangeMarker(createIntervalMarker(8, 10, Color.YELLOW, "8~10"), Layer.BACKGROUND); //x坐标轴实例化 CategoryAxis xaxis = plot.getDomainAxis(); //坐标轴标尺值字体 xaxis.setTickLabelFont(new Font("Serif",Font.CENTER_BASELINE,13)); xaxis.setLabelFont(new Font("Serif",Font.CENTER_BASELINE,20)); //设置栏目名称的旋转角度 xaxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0)); //设置栏数据距离百分比(0.0~1.0) xaxis.setCategoryMargin(0.1); //设置距离图片左端距离,参数为图片的百分比 xaxis.setLowerMargin(0.05); //设置距离图片右端距离 xaxis.setUpperMargin(0.05); //y坐标轴实例化 ValueAxis yaxis = plot.getRangeAxis(); //坐标轴标尺值字体 yaxis.setTickLabelFont(new Font("Serif",Font.CENTER_BASELINE,13)); yaxis.setLabelFont(new Font("Serif",Font.CENTER_BASELINE,15)); // 设置的范围轴,以显示只有整数 NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); //装载设定 rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); //将纵坐标间距设置为3 rangeAxis.setTickUnit(new NumberTickUnit(3)); //设置最高的一个柱与图片顶端的距离 rangeAxis.setUpperMargin(0.2); //设置最低的一个柱与图片底端的距离 rangeAxis.setLowerMargin(0.05); //设置竖坐标标签的旋转角度 rangeAxis.setLabelAngle(0.05); //设置第二y轴坐标名 NumberAxis numberAxis = new NumberAxis("y轴值"); //将第二纵坐标间距设置为5 numberAxis.setTickUnit(new NumberTickUnit(5)); //装载第二y轴坐标 plot.setRangeAxis(1, numberAxis); //设置第二y轴坐标位置 plot.setRangeAxisLocation(1, AxisLocation.BOTTOM_OR_LEFT); //装载第二组数据 plot.setDataset(1, dataset1); //是第二组数据生成线图 plot.setRenderer(1, new LineAndShapeRenderer()); //第二个数据映射到第一个数据域x轴 plot.mapDatasetToDomainAxis(1,0); //第二个数据映射到第二个数据域y轴 plot.mapDatasetToRangeAxis(1,1); //修改图例的字体 LegendTitle legend = chart.getLegend(); legend.setItemFont(new Font("宋体", Font.BOLD, 14)); //设置图例中图示的位置(最短距离) legend.setPadding(10D,10D,10D,10D); //设置图例的背景颜色 legend.setBackgroundPaint(Color.CYAN); //设置图例在图片中的位置(上下左右) legend.setPosition(RectangleEdge.RIGHT); //设置图例在图片中的位置(左中右) legend.setHorizontalAlignment(HorizontalAlignment.CENTER); //设置图例在图片中的位置(上中下) legend.setVerticalAlignment(VerticalAlignment.TOP); //手动设置图例是否可见 legend.setVisible(false); //重新生成图例(契机) //实例化图例 LegendTitle legendtitle = new LegendTitle(chart.getPlot()); //设置图片背景颜色 legendtitle.setBackgroundPaint(Color.CYAN); //实例化图例块 BlockContainer blockcontainer = new BlockContainer(new BorderArrangement()); //图例的边界宽度 blockcontainer.setBorder(1.0D, 1.0D, 1.0D, 1.0D); //自定义图例标题(标签) LabelBlock labelblock = new LabelBlock("test菜单:", new Font("宋体", 1, 12)); //自定义边界距离 labelblock.setPadding(5D, 5D, 5D, 5D); //自定义图例标签的位置并使之装入自定义图例框 blockcontainer.add(labelblock, RectangleEdge.TOP); //自定义图例标题(标签) LabelBlock labelblock1 = new LabelBlock("by thomas 2008.12.19"); //自定义边界距离 labelblock1.setPadding(8D, 20D, 2D, 5D); //自定义图例标签的位置并使之装入自定义图例框 blockcontainer.add(labelblock1, RectangleEdge.BOTTOM); //获得原图例的实例项目集 BlockContainer blockcontainer1 = legendtitle.getItemContainer(); //自定义边界距离 blockcontainer1.setPadding(2D, 10D, 5D, 2D); //自定义图例标签的位置并使之装入自定义图例框 blockcontainer.add(blockcontainer1); //画出图例边界 legendtitle.setWrapper(blockcontainer); //设置图例在图片中的位置(上下左右) legendtitle.setPosition(RectangleEdge.RIGHT); //设置图例在图片中的位置(左中右) legendtitle.setHorizontalAlignment(HorizontalAlignment.LEFT); //使图例生成有效 chart.addSubtitle(legendtitle); //让上面所有的主要样式设置都生效 plot.setRenderer(renderer); return chart; } /** * <b>建构间隔标记。针对y轴<b> * @param low 区域起始位置 * @param height 区域结束位置 * @param color 区域颜色 * @param label 区域名称(统一都在y轴的左中位置) * @return intervalmarker 返回统一建构间隔标记 */ private static IntervalMarker createIntervalMarker(double low, double height, Color color, String label) { IntervalMarker intervalmarker = new IntervalMarker(low, height); intervalmarker.setPaint(color); intervalmarker.setLabel(label); intervalmarker.setLabelFont(new Font("宋体", Font.BOLD, 8)); intervalmarker.setLabelAnchor(RectangleAnchor.LEFT); intervalmarker.setLabelTextAnchor(TextAnchor.CENTER_LEFT); return intervalmarker; } /** * Starting point for the demonstration application. * * @param args ignored. */ public static void main(String[] args) { BarChartDemo1 demo = new BarChartDemo1("Bar 图 Demo 1"); demo.pack(); RefineryUtilities.centerFrameOnScreen(demo); demo.setVisible(true); } }
二、饼图demo
/** * 生成一个2D饼图 * * */ package org.jfree.chart.demo; import java.awt.Color; import java.awt.Font; import java.awt.GradientPaint; import java.awt.Image; import java.io.IOException; import java.text.DecimalFormat; import java.text.NumberFormat; import javax.imageio.ImageIO; import javax.swing.JPanel; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.block.BlockContainer; import org.jfree.chart.block.BorderArrangement; import org.jfree.chart.block.LabelBlock; import org.jfree.chart.labels.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.PiePlot; import org.jfree.chart.title.LegendTitle; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.HorizontalAlignment; import org.jfree.ui.RectangleEdge; import org.jfree.ui.RefineryUtilities; import org.jfree.ui.VerticalAlignment; /** * 生成一个2D饼图(基础图形) */ public class PieChartDemo1 extends ApplicationFrame { /** * */ private static final long serialVersionUID = 1L; /** * Default constructor. * * @param title the frame title. */ public PieChartDemo1(String title) { super(title); setContentPane(createDemoPanel(title)); } /** * Creates a sample dataset. * * @return A sample dataset. */ private static PieDataset createDataset() { DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("One", new Double(43.2)); dataset.setValue("Two", new Double(10.0)); dataset.setValue("Three", new Double(27.5)); dataset.setValue("Four", new Double(17.5)); dataset.setValue("Five", new Double(11.0)); dataset.setValue("Six", new Double(19.4)); return dataset; } /** * Creates a chart. * * @param dataset the dataset. * * @return A chart. */ private static JFreeChart createChart(String title,PieDataset dataset) { JFreeChart chart = ChartFactory.createPieChart( title, // chart title dataset, // data true, // include legend true, false ); //总图片设置 //设置背景颜色的图表 GradientPaint gp = new GradientPaint(0.0f, 0.0f, Color.blue, 500.0f, 270.0f, new Color(0, 0, 64)); gp = null; chart.setBackgroundPaint(gp); //设置图片背景图片 if(gp == null){ Image image = null; try { image = ImageIO.read(new java.io.File("D:\\2006110821482378503.jpg")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } chart.setBackgroundImage(image); } //设置图片的边框是否显示 chart.setBorderVisible(false); //设置背景图片透明度(0.0~1.0) chart.setBackgroundImageAlpha(1.0f); //是否字体去锯齿 chart.setAntiAlias(true); //手动设置饼图样式 PiePlot plot = (PiePlot) chart.getPlot(); //设置图片的背景颜色 plot.setBackgroundPaint(Color.lightGray); //设置图片的透明度(0.0~1.0) plot.setBackgroundAlpha(0.6f); //把Lable 为"One" 的那一块”挖“出来30% plot.setExplodePercent("One",0.3D); plot.setExplodePercent("Six",0.3D); //设置无数据时的信息 plot.setNoDataMessage("无对应的数据,请重新查询。"); // 设置无数据时的信息显示颜色 plot.setNoDataMessagePaint(Color.red); // 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位 plot.setLabelGenerator(new StandardPieSectionLabelGenerator( "{0}={1}辆({2})", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%"))); // 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例 plot.setLabelFont(new Font("宋体", Font.BOLD, 14)); plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator( "{0}={1}({2})")); plot.setLabelFont(new Font("SansSerif", Font.TRUETYPE_FONT, 12)); // 指定图片的透明度(0.0-1.0) plot.setForegroundAlpha(1.0f); // 指定显示的饼图上圆形(false)还椭圆形(true) plot.setCircular(true, false); // 设置第一个 饼块section 的开始位置,默认是12点钟方向 plot.setStartAngle(90); // 设置分饼颜色 plot.setSectionPaint("Five", new Color(244, 194, 144)); plot.setSectionPaint("Six", new Color(144, 233, 144)); //修改图例的字体 LegendTitle legend = chart.getLegend(); legend.setItemFont(new Font("宋体", Font.BOLD, 14)); //设置图例中图示的位置(最短距离) legend.setPadding(10D,10D,10D,10D); //设置图例的背景颜色 legend.setBackgroundPaint(Color.CYAN); //设置图例在图片中的位置(上下左右) legend.setPosition(RectangleEdge.RIGHT); //设置图例在图片中的位置(左中右) legend.setHorizontalAlignment(HorizontalAlignment.CENTER); //设置图例在图片中的位置(上中下) legend.setVerticalAlignment(VerticalAlignment.TOP); //手动设置图例是否可见 legend.setVisible(false); //重新生成图例(契机) //实例化图例 LegendTitle legendtitle = new LegendTitle(chart.getPlot()); //设置图片背景颜色 legendtitle.setBackgroundPaint(Color.CYAN); //实例化图例块 BlockContainer blockcontainer = new BlockContainer(new BorderArrangement()); //图例的边界宽度 blockcontainer.setBorder(1.0D, 1.0D, 1.0D, 1.0D); //自定义图例标题(标签) LabelBlock labelblock = new LabelBlock("test菜单:", new Font("宋体", 1, 12)); //自定义边界距离 labelblock.setPadding(5D, 5D, 5D, 5D); //自定义图例标签的位置并使之装入自定义图例框 blockcontainer.add(labelblock, RectangleEdge.TOP); //自定义图例标题(标签) LabelBlock labelblock1 = new LabelBlock("by thomas 2008.12.19"); //自定义边界距离 labelblock1.setPadding(8D, 20D, 2D, 5D); //自定义图例标签的位置并使之装入自定义图例框 blockcontainer.add(labelblock1, RectangleEdge.BOTTOM); //获得原图例的实例项目集 BlockContainer blockcontainer1 = legendtitle.getItemContainer(); //自定义边界距离 blockcontainer1.setPadding(2D, 10D, 5D, 2D); //自定义图例标签的位置并使之装入自定义图例框 blockcontainer.add(blockcontainer1); //画出图例边界 legendtitle.setWrapper(blockcontainer); //设置图例在图片中的位置(上下左右) legendtitle.setPosition(RectangleEdge.RIGHT); //设置图例在图片中的位置(左中右) legendtitle.setHorizontalAlignment(HorizontalAlignment.LEFT); chart.addSubtitle(legendtitle); return chart; } /** * Creates a panel for the demo (used by SuperDemo.java). * * @return A panel. */ public static JPanel createDemoPanel(String title) { JFreeChart chart = createChart(title,createDataset()); return new ChartPanel(chart); } /** * Starting point for the demonstration application. * * @param args ignored. */ public static void main(String[] args) { // ****************************************************************** // More than 150 demo applications are included with the JFreeChart // Developer Guide...for more information, see: // // > http://www.object-refinery.com/jfreechart/guide.html // // ****************************************************************** PieChartDemo1 demo = new PieChartDemo1("Pie Chart Demo 1"); demo.pack(); RefineryUtilities.centerFrameOnScreen(demo); demo.setVisible(true); } }
三、线图demo
* 生成一个线形图 * */ package org.jfree.chart.demo; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GradientPaint; import java.awt.Image; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Ellipse2D; import java.awt.geom.Rectangle2D; import java.io.IOException; import java.awt.geom.GeneralPath; import javax.imageio.ImageIO; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.AxisLocation; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.axis.NumberTickUnit; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.block.BlockContainer; import org.jfree.chart.block.BorderArrangement; import org.jfree.chart.block.LabelBlock; import org.jfree.chart.labels.ItemLabelAnchor; import org.jfree.chart.labels.ItemLabelPosition; import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.IntervalMarker; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.LineAndShapeRenderer; import org.jfree.chart.title.LegendTitle; import org.jfree.chart.title.TextTitle; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.HorizontalAlignment; import org.jfree.ui.Layer; import org.jfree.ui.RectangleAnchor; import org.jfree.ui.RectangleEdge; import org.jfree.ui.RefineryUtilities; import org.jfree.ui.TextAnchor; import org.jfree.ui.VerticalAlignment; import org.jfree.util.ShapeUtilities; /** * 生成一个带有多组数据的线形图(最基础图形) * */ public class LineChartDemo1 extends ApplicationFrame { /** * */ private static final long serialVersionUID = 1L; /** * 生成条形图 * * @param title 大标题. */ public LineChartDemo1(String title) { super(title); CategoryDataset dataset = createDataset(); JFreeChart chart = createChart(title,dataset); ChartPanel chartPanel = new ChartPanel(chart, false); chartPanel.setPreferredSize(new Dimension(500, 270)); setContentPane(chartPanel); } /** * 返回条形图所需要的数据(CategoryDataset基础数据类型). * * @return The dataset. */ private static CategoryDataset createDataset() { // 行数据名称 String series1 = "First"; String series2 = "Second"; String series3 = "Third"; // 栏数据名称 String category1 = "Category 1"; String category2 = "Category 2"; String category3 = "Category 3"; String category4 = "Category 4"; String category5 = "Category 5"; // 详细数据 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(1.0, series1, category1); dataset.addValue(4.0, series1, category2); dataset.addValue(3.0, series1, category3); dataset.addValue(5.0, series1, category4); dataset.addValue(5.0, series1, category5); dataset.addValue(5.0, series2, category1); dataset.addValue(7.0, series2, category2); dataset.addValue(6.0, series2, category3); dataset.addValue(8.0, series2, category4); dataset.addValue(4.0, series2, category5); dataset.addValue(4.0, series3, category1); dataset.addValue(3.0, series3, category2); dataset.addValue(2.0, series3, category3); dataset.addValue(3.0, series3, category4); dataset.addValue(6.0, series3, category5); dataset.addValue(0.40, series1, category1); dataset.addValue(0.51, series1, category2); dataset.addValue(0.3, series1, category3); dataset.addValue(0.5, series1, category4); dataset.addValue(0.5, series1, category5); return dataset; } /** * 生成一个线形图图片 * * @param dataset the dataset. * * @return The chart. */ private static JFreeChart createChart(String title,CategoryDataset dataset) { // create the chart... JFreeChart chart = ChartFactory.createLineChart( title, // chart title "Category", // domain axis label "Value", // range axis label dataset, // data PlotOrientation.VERTICAL, // orientation true, // include legend true, // tooltips? false // URLs? ); //总图片设置 //设置背景颜色的图表 GradientPaint gp = new GradientPaint(0.0f, 0.0f, Color.blue, 500.0f, 270.0f, new Color(0, 0, 64)); gp = null; chart.setBackgroundPaint(gp); //设置图片背景图片 if(gp == null){ Image image = null; try { image = ImageIO.read(new java.io.File("D:\\2006110821482378503.jpg")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } chart.setBackgroundImage(image); } //设置图片的边框是否显示 chart.setBorderVisible(true); //设置背景图片透明度(0.0~1.0) chart.setBackgroundImageAlpha(1.0f); //是否字体去锯齿 chart.setAntiAlias(true); //主标题字体设置 TextTitle text = chart.getTitle(); Font font = new Font("黑体",Font.BOLD,20); text.setFont(font); chart.setTitle(text); chart.addSubtitle(new TextTitle( "Source: http://thomas0988.iteye.com/", new Font("Dialog", Font.ITALIC, 10))); //主图片主样式实例化 CategoryPlot plot=chart.getCategoryPlot(); //设置图片的背景颜色 plot.setBackgroundPaint(Color.lightGray); //设置图片的透明度(0.0~1.0) plot.setBackgroundAlpha(1.0f); //设置x轴刻度线颜色 plot.setDomainGridlinePaint(Color.white); plot.setDomainGridlinesVisible(true); //设置y轴刻度线颜色 plot.setRangeGridlinePaint(Color.white); plot.setRangeGridlinesVisible(true); //设置柱子的透明度 plot.setForegroundAlpha(0.9f); //设置x轴显示位置 plot.setDomainAxisLocation(AxisLocation.TOP_OR_LEFT); //设置y轴显示位置 plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT); plot.addRangeMarker(createIntervalMarker(0, 2, Color.GREEN, "0~2"), Layer.BACKGROUND); plot.addRangeMarker(createIntervalMarker(2, 4, Color.BLACK, "2~4"), Layer.BACKGROUND); plot.addRangeMarker(createIntervalMarker(4, 6, Color.PINK, "4~6"), Layer.FOREGROUND); plot.addRangeMarker(createIntervalMarker(6, 8, Color.BLUE, "6~8"), Layer.BACKGROUND); plot.addRangeMarker(createIntervalMarker(8, 10, Color.YELLOW, "8~10"), Layer.BACKGROUND); //Line实例化,获得LineAndShapeRenderer类的实例,目的是设置线形的绘制属性 LineAndShapeRenderer renderer = (LineAndShapeRenderer)plot.getRenderer(); //手动设置条形图上bar设置颜色 GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 0.0f, 0.0f, new Color(0, 0, 64)); GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f, 0.0f, new Color(64, 0, 0)); GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.green, 0.0f, 0.0f, new Color(0, 64, 0)); renderer.setSeriesPaint(0, gp0); renderer.setSeriesPaint(1, gp1); renderer.setSeriesPaint(2, gp2); renderer.setBaseOutlinePaint(Color.BLACK); //设置第一条线有数据点 renderer.setSeriesShapesVisible(0, true); //renderer.setDrawOutlines(true); //可以重新设置数据点颜色默认为白色方形 renderer.setUseFillPaint(true); //数据点填充颜色 renderer.setFillPaint(Color.yellow); //设置数据点为圆形(x为上下偏离,y为左右偏离,w为圆形左右距离,h为圆形上下距离) //renderer.setSeriesShape(0,new Ellipse2D.Double(-3.0,-3.0,6.0, 6.0)); //设置数据点为菱形(x为边,y为交) //renderer.setSeriesShape(0,ShapeUtilities.createDiagonalCross(3.0f, 1.0f)); //设置数据点为菱形(x为双对边距离) //renderer.setSeriesShape(0,ShapeUtilities.createDiamond(6.0f)); //设置数据点为倒三角形(x为三角距离) //renderer.setSeriesShape(0,ShapeUtilities.createDownTriangle(3.0f)); //设置数据点为正方形(x为边,y为角) //renderer.setSeriesShape(0,ShapeUtilities.createRegularCross(3.0f, 1.0f)); //设置数据点为上三角形(x为三角距离) renderer.setSeriesShape(0,ShapeUtilities.createUpTriangle(3.0f)); //设置每个数据点的连接线是否显示 renderer.setSeriesLinesVisible(0, true); /// 设置柱形图上的文字偏离值 renderer.setItemLabelAnchorOffset(5D); /// 设置柱形图上的文字 renderer.setBaseItemLabelFont(new Font("arial", Font.PLAIN, 10), true); ///显示每个柱的数值,并修改该数值的字体属性 renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); //设置数值在柱图的方位 renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER)); //设置数值生效 renderer.setBaseItemLabelsVisible(true); //设置bar生效 plot.setRenderer(renderer); //x坐标轴实例化 CategoryAxis xaxis = plot.getDomainAxis(); //坐标轴标尺值字体 xaxis.setTickLabelFont(new Font("Serif",Font.CENTER_BASELINE,13)); xaxis.setLabelFont(new Font("Serif",Font.CENTER_BASELINE,20)); //设置栏目名称的旋转角度 xaxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0)); //设置距离图片左端距离,参数为图片的百分比 xaxis.setLowerMargin(0.05); //设置距离图片右端距离 xaxis.setUpperMargin(0.05); //y坐标轴实例化 ValueAxis yaxis = plot.getRangeAxis(); //坐标轴标尺值字体 yaxis.setTickLabelFont(new Font("Serif",Font.CENTER_BASELINE,13)); yaxis.setLabelFont(new Font("Serif",Font.CENTER_BASELINE,15)); // 设置的范围轴,以显示只有整数 final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); //将纵坐标间距设置为3 rangeAxis.setTickUnit(new NumberTickUnit(3)); //设置最高的一个柱与图片顶端的距离 rangeAxis.setUpperMargin(0.2); //设置最低的一个柱与图片底端的距离 rangeAxis.setLowerMargin(0.05); //设置竖坐标标签的旋转角度 rangeAxis.setLabelAngle(0.05); //设置数值最小范围 rangeAxis.setLowerBound(0.3); //设置数值最大范围 rangeAxis.setUpperBound(5); //修改图例的字体 LegendTitle legend = chart.getLegend(); legend.setItemFont(new Font("宋体", Font.BOLD, 14)); //设置图例中图示的位置(最短距离) legend.setPadding(10D,10D,10D,10D); //设置图例的背景颜色 legend.setBackgroundPaint(Color.CYAN); //设置图例在图片中的位置(上下左右) legend.setPosition(RectangleEdge.RIGHT); //设置图例在图片中的位置(左中右) legend.setHorizontalAlignment(HorizontalAlignment.CENTER); //设置图例在图片中的位置(上中下) legend.setVerticalAlignment(VerticalAlignment.TOP); //手动设置图例是否可见 legend.setVisible(false); //重新生成图例(契机) //实例化图例 LegendTitle legendtitle = new LegendTitle(chart.getPlot()); //设置图片背景颜色 legendtitle.setBackgroundPaint(Color.CYAN); //实例化图例块 BlockContainer blockcontainer = new BlockContainer(new BorderArrangement()); //图例的边界宽度 blockcontainer.setBorder(1.0D, 1.0D, 1.0D, 1.0D); //自定义图例标题(标签) LabelBlock labelblock = new LabelBlock("test菜单:", new Font("宋体", 1, 12)); //自定义边界距离 labelblock.setPadding(5D, 5D, 5D, 5D); //自定义图例标签的位置并使之装入自定义图例框 blockcontainer.add(labelblock, RectangleEdge.TOP); //自定义图例标题(标签) LabelBlock labelblock1 = new LabelBlock("by thomas 2009.01.04"); //自定义边界距离 labelblock1.setPadding(8D, 20D, 2D, 5D); //自定义图例标签的位置并使之装入自定义图例框 blockcontainer.add(labelblock1, RectangleEdge.BOTTOM); //获得原图例的实例项目集 BlockContainer blockcontainer1 = legendtitle.getItemContainer(); //自定义边界距离 blockcontainer1.setPadding(2D, 10D, 5D, 2D); //自定义图例标签的位置并使之装入自定义图例框 blockcontainer.add(blockcontainer1); //画出图例边界 legendtitle.setWrapper(blockcontainer); //设置图例在图片中的位置(上下左右) legendtitle.setPosition(RectangleEdge.RIGHT); //设置图例在图片中的位置(左中右) legendtitle.setHorizontalAlignment(HorizontalAlignment.LEFT); chart.addSubtitle(legendtitle); return chart; } private static IntervalMarker createIntervalMarker(double low, double height, Color color, String label) { IntervalMarker intervalmarker = new IntervalMarker(low, height); intervalmarker.setPaint(color); intervalmarker.setLabel(label); intervalmarker.setLabelFont(new Font("宋体", Font.BOLD, 8)); intervalmarker.setLabelAnchor(RectangleAnchor.LEFT); intervalmarker.setLabelTextAnchor(TextAnchor.CENTER_LEFT); return intervalmarker; } /** * Starting point for the demonstration application. * * @param args ignored. */ public static void main(String[] args) { LineChartDemo1 demo = new LineChartDemo1("Line Chart Demo 1"); demo.pack(); RefineryUtilities.centerFrameOnScreen(demo); demo.setVisible(true); } }
四、雷达图demo
import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GradientPaint; import java.awt.Image; import java.io.IOException; import javax.imageio.ImageIO; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.axis.NumberTickUnit; import org.jfree.chart.block.BlockContainer; import org.jfree.chart.block.BorderArrangement; import org.jfree.chart.block.LabelBlock; import org.jfree.chart.plot.PolarPlot; import org.jfree.chart.renderer.DefaultPolarItemRenderer; import org.jfree.chart.title.LegendTitle; import org.jfree.data.xy.XYDataset; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.HorizontalAlignment; import org.jfree.ui.RectangleEdge; import org.jfree.ui.RefineryUtilities; import org.jfree.ui.VerticalAlignment; /** * 生成一个带有多组数据的条形图(最基础图形) * */ public class PolarChartDemo1 extends ApplicationFrame { /** * */ private static final long serialVersionUID = 1L; /** * 生成条形图 * * @param title 大标题. */ public PolarChartDemo1(String title) { super(title); XYDataset dataset = createDataset(); JFreeChart chart = createChart(dataset); ChartPanel chartPanel = new ChartPanel(chart, false); chartPanel.setPreferredSize(new Dimension(800, 600)); setContentPane(chartPanel); } /** * 返回条形图所需要的数据(CategoryDataset基础数据类型). * * @return The dataset. */ private static XYDataset createDataset() { // 详细数据 XYSeriesCollection xySeriesCollection = new XYSeriesCollection(); XYSeries xyseries0 = new XYSeries("one"); xyseries0.add(0.0D, 91D); xyseries0.add(90D, 100D); xyseries0.add(180D, 78D); xyseries0.add(270D, 84D); xySeriesCollection.addSeries(xyseries0); XYSeries xyseries1 = new XYSeries("two"); xyseries1.add(90D, 11.199999999999999D); xyseries1.add(180D, 21.399999999999999D); xyseries1.add(230D, 17.300000000000001D); xyseries1.add(355D, 10.9D); xySeriesCollection.addSeries(xyseries1); XYSeries xyseries2 = new XYSeries("three"); xyseries2.add(90D, 90.199999999999999D); xyseries2.add(180D, 90.399999999999999D); xyseries2.add(250D, 90.300000000000001D); xyseries2.add(355D, 100D); xySeriesCollection.addSeries(xyseries2); return xySeriesCollection; } /** * 生成一个条形图图片 * * @param dataset the dataset. * * @return The chart. */ private static JFreeChart createChart(XYDataset dataset) { // create the chart... JFreeChart chart = ChartFactory.createPolarChart( "Bar Chart Demo 1", // chart title dataset, // data true, // include legend true, // tooltips? false // URLs? ); //总图片设置 //设置背景颜色的图表 GradientPaint gp = new GradientPaint(0.0f, 0.0f, Color.blue, 500.0f, 270.0f, new Color(0, 0, 64)); gp = null; chart.setBackgroundPaint(gp); //设置图片背景图片 if(gp == null){ Image image = null; try { image = ImageIO.read(new java.io.File("D:\\2006110821482378503.jpg")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } chart.setBackgroundImage(image); } //设置图片的边框是否显示 chart.setBorderVisible(false); //设置背景图片透明度(0.0~1.0) chart.setBackgroundImageAlpha(1.0f); //是否字体去锯齿 chart.setAntiAlias(true); //手动设置饼图样式 PolarPlot plot = (PolarPlot) chart.getPlot(); //设置图片的背景颜色 plot.setBackgroundPaint(Color.lightGray); //设置图片的透明度(0.0~1.0) plot.setBackgroundAlpha(0.6f); //设置无数据时的信息 plot.setNoDataMessage("无对应的数据,请重新查询。"); // 设置无数据时的信息显示颜色 plot.setNoDataMessagePaint(Color.red); // 指定图片的透明度(0.0-1.0) plot.setForegroundAlpha(1.0f); plot.setBackgroundPaint(Color.lightGray); /* plot.addCornerTextItem("Corner Item 1 "); plot.addCornerTextItem("Corner Item 2 "); plot.setBackgroundImageAlignment(plot.MINIMUM_HEIGHT_TO_DRAW); plot.setAngleTickUnit(new NumberTickUnit(45));*/ // plot.setAngleGridlinesVisible(false); // 设置雷达颜色 GradientPaint gradientpaint3 = new GradientPaint(0.0F, 0.0F, Color.black, 0.0F, 0.0F, Color.black); plot.setRadiusGridlinePaint(gradientpaint3);// // 两个四边形颜色 GradientPaint gradientpaint1 = new GradientPaint(0.0F, 0.0F, Color.red, 0.0F, 0.0F, Color.red); // GradientPaint gradientpaint2 = new GradientPaint(0.0F, 0.0F, Color.blue, 0.0F, 0.0F, Color.blue); // // 设置两个四边形颜色 DefaultPolarItemRenderer renderer = new DefaultPolarItemRenderer(); renderer.setSeriesPaint(0, gradientpaint1); renderer.setSeriesPaint(1, gradientpaint2); renderer.setSeriesPaint(2, gradientpaint3); plot.setRenderer(renderer); NumberAxis numberaxis = (NumberAxis) plot.getAxis(); numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); numberaxis.setAutoRange(false); numberaxis.setVisible(false); numberaxis.setTickUnit(new NumberTickUnit(5));// 设置雷达网格数量 //修改图例的字体 LegendTitle legend = chart.getLegend(); legend.setItemFont(new Font("宋体", Font.BOLD, 14)); //设置图例中图示的位置(最短距离) legend.setPadding(10D,10D,10D,10D); //设置图例的背景颜色 legend.setBackgroundPaint(Color.CYAN); //设置图例在图片中的位置(上下左右) legend.setPosition(RectangleEdge.RIGHT); //设置图例在图片中的位置(左中右) legend.setHorizontalAlignment(HorizontalAlignment.CENTER); //设置图例在图片中的位置(上中下) legend.setVerticalAlignment(VerticalAlignment.TOP); //手动设置图例是否可见 legend.setVisible(false); //重新生成图例(契机) //实例化图例 LegendTitle legendtitle = new LegendTitle(chart.getPlot()); //设置图片背景颜色 legendtitle.setBackgroundPaint(Color.CYAN); //实例化图例块 BlockContainer blockcontainer = new BlockContainer(new BorderArrangement()); //图例的边界宽度 blockcontainer.setBorder(1.0D, 1.0D, 1.0D, 1.0D); //自定义图例标题(标签) LabelBlock labelblock = new LabelBlock("test菜单:", new Font("宋体", 1, 12)); //自定义边界距离 labelblock.setPadding(5D, 5D, 5D, 5D); //自定义图例标签的位置并使之装入自定义图例框 blockcontainer.add(labelblock, RectangleEdge.TOP); //自定义图例标题(标签) LabelBlock labelblock1 = new LabelBlock("by thomas 2008.12.19"); //自定义边界距离 labelblock1.setPadding(8D, 20D, 2D, 5D); //自定义图例标签的位置并使之装入自定义图例框 blockcontainer.add(labelblock1, RectangleEdge.BOTTOM); //获得原图例的实例项目集 BlockContainer blockcontainer1 = legendtitle.getItemContainer(); //自定义边界距离 blockcontainer1.setPadding(2D, 10D, 5D, 2D); //自定义图例标签的位置并使之装入自定义图例框 blockcontainer.add(blockcontainer1); //画出图例边界 legendtitle.setWrapper(blockcontainer); //设置图例在图片中的位置(上下左右) legendtitle.setPosition(RectangleEdge.RIGHT); //设置图例在图片中的位置(左中右) legendtitle.setHorizontalAlignment(HorizontalAlignment.LEFT); chart.addSubtitle(legendtitle); return chart; } /** * Starting point for the demonstration application. * * @param args ignored. */ public static void main(String[] args) { PolarChartDemo1 demo = new PolarChartDemo1("Bar Chart Demo 1"); demo.pack(); RefineryUtilities.centerFrameOnScreen(demo); demo.setVisible(true); } }
五、蜘蛛图demo
import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GradientPaint; import java.awt.Image; import java.io.IOException; import java.text.DecimalFormat; import java.text.NumberFormat; import javax.imageio.ImageIO; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.annotations.CategoryAnnotation; import org.jfree.chart.annotations.XYTextAnnotation; import org.jfree.chart.axis.AxisLocation; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.axis.NumberTickUnit; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.block.BlockContainer; import org.jfree.chart.block.BorderArrangement; import org.jfree.chart.block.LabelBlock; import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; import org.jfree.chart.labels.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.IntervalMarker; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.SpiderWebPlot; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.chart.renderer.category.LineAndShapeRenderer; import org.jfree.chart.title.LegendTitle; import org.jfree.chart.title.TextTitle; import org.jfree.chart.urls.StandardCategoryURLGenerator; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.HorizontalAlignment; import org.jfree.ui.Layer; import org.jfree.ui.RectangleAnchor; import org.jfree.ui.RectangleEdge; import org.jfree.ui.RectangleInsets; import org.jfree.ui.RefineryUtilities; import org.jfree.ui.TextAnchor; import org.jfree.ui.VerticalAlignment; /** * 生成一个带有多组数据的柱图(最基础图形) * */ public class PolarChartDemo2 extends ApplicationFrame { /** * */ private static final long serialVersionUID = 1L; /** * 生成柱图 * * @param title 大标题. */ public PolarChartDemo2(String title) { super(title); CategoryDataset dataset = createDataset(); JFreeChart chart = createChart(title,dataset); ChartPanel chartPanel = new ChartPanel(chart, false); chartPanel.setPreferredSize(new Dimension(500, 270)); setContentPane(chartPanel); } /** * 返回条形图所需要的数据(CategoryDataset基础数据类型). * * @return The dataset. */ private static CategoryDataset createDataset() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); String group1 = "apple "; dataset.addValue(5, group1, "w1"); dataset.addValue(6, group1, "w2"); dataset.addValue(4, group1, "w3"); dataset.addValue(2, group1, "w4"); dataset.addValue(5, group1, "w5"); dataset.addValue(5, group1, "w6"); dataset.addValue(5, group1, "w7"); dataset.addValue(8, group1, "w8"); return dataset; } /** * 生成一个柱图图片 * * @param dataset the dataset. * * @return The chart. */ private static JFreeChart createChart(String title,CategoryDataset dataset) { SpiderWebPlot spiderwebplot = new SpiderWebPlot(dataset); JFreeChart chart = new JFreeChart("Test", TextTitle.DEFAULT_FONT,spiderwebplot, false); LegendTitle legendtitle = new LegendTitle(spiderwebplot); legendtitle.setPosition(RectangleEdge.BOTTOM); chart.addSubtitle(legendtitle); return chart; } /** * <b>建构间隔标记。针对y轴<b> * @param low 区域起始位置 * @param height 区域结束位置 * @param color 区域颜色 * @param label 区域名称(统一都在y轴的左中位置) * @return intervalmarker 返回统一建构间隔标记 */ private static IntervalMarker createIntervalMarker(double low, double height, Color color, String label) { IntervalMarker intervalmarker = new IntervalMarker(low, height); intervalmarker.setPaint(color); intervalmarker.setLabel(label); intervalmarker.setLabelFont(new Font("宋体", Font.BOLD, 8)); intervalmarker.setLabelAnchor(RectangleAnchor.LEFT); intervalmarker.setLabelTextAnchor(TextAnchor.CENTER_LEFT); return intervalmarker; } /** * Starting point for the demonstration application. * * @param args ignored. */ public static void main(String[] args) { PolarChartDemo2 demo = new PolarChartDemo2("Bar 图 Demo 1"); demo.pack(); RefineryUtilities.centerFrameOnScreen(demo); demo.setVisible(true); } }
相关推荐
3. **动态和交互式功能**:JFreeChart支持图表的动态更新和交互,例如点击事件、鼠标悬停显示数据点信息等。 4. **支持多种输出格式**:生成的图表可以导出为PNG、JPEG、PDF、SVG等多种格式,方便在各种环境中使用...
这篇内容将深入探讨 JFreeChart 的基本使用方法和在 `jfreechart demo` 中的示例程序。 首先,让我们了解 JFreeChart 的核心概念。JFreeChart 提供了 ChartFactory 类,用于创建不同类型的图表。例如,你可以通过 `...
"jfreechart1.0.3-demo-src" 是 JFreeChart 1.0.3 版本的演示源码,是理解并学习这个库的重要资源。 首先,"demo" 文件夹包含了 JFreeChart 的各种示例代码,这些代码展示了如何利用 JFreeChart 实现各种复杂的图表...
《JFreeChart 1.0.13 Demo详解》 JFreeChart,作为一个强大的Java图表库,被广泛应用于数据可视化领域。它提供了丰富的图表类型,包括柱状图、饼图、线图、面积图、散点图等,适用于各种数据分析和报告展示。...
《JFreeChart 1.0.17 Demo 源码解析与应用探索》 JFreeChart 是一个广泛使用的开源Java库,它提供了一系列丰富的图表组件,如饼图、柱状图、线图、散点图等,适用于各种数据可视化需求。在本篇文章中,我们将深入...
**JFreeChart报表小demo** 是一个基于Java的项目,主要展示了如何使用JFreeChart库创建各种图表,如饼图、柱状图和线图,并将这些图表嵌入到PDF文档中,使用了iText库进行PDF处理。这个项目非常适合初学者了解数据...
**JFreeChartDemo 仪表盘** JFreeChart 是一个强大的 Java 图形库,它提供了丰富的图表类型,包括柱状图、饼图、线图、散点图以及仪表盘等。在给定的“JfreeChartDemo 仪表盘”中,我们将深入探讨如何使用 ...
**JFreeChart网页版Demo详解** JFreeChart是一款强大的Java图表库,用于生成高质量的2D图表,适用于各种应用场景,包括网页应用。本Demo主要展示了JFreeChart在网页中的运用,特别是饼图和条形图的展示,以及如何...
例如,`jquery.jqplot.js` 是一个基于 JQuery 的图表库,它可以与 JFreeChart 生成的折线图数据相结合,实现动态更新、缩放、平移等功能。 5. **相关库的使用** - **jQuery**: 一个流行的 JavaScript 库,简化了 ...
《JFreeChart实战:深入解析官网DEMO及源代码》 JFreeChart是一款强大的Java图表库,它提供了丰富的图表类型,如柱状图、饼图、线图、散点图等,广泛应用于数据分析、报告生成以及GUI应用中。本文将通过分析...
本篇将深入探讨JFreeChart的参考Demo、技术文档,以及如何解决在使用过程中可能遇到的乱码问题。 首先,**JFreeChart参考Demo**是学习和理解JFreeChart功能的绝佳资源。Demo中包含了各种类型的图表示例,展示了如何...
在"jfreechart_demo.zip"中,你可能会找到如何设置数据源(如数组、列表或数据库查询结果)、如何配置图表样式、如何将图表导出为各种格式(如PNG、JPEG、PDF等)的示例代码。这些代码实例将帮助你了解如何将...
public class JFreeChartDemo { public static void main(String[] args) { // 创建数据模型 DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("Category 1", 30); dataset.setValue(...
5. **动态更新**:JFreeChart支持动态更新图表,这意味着可以在运行时添加、删除或修改数据,图表会自动更新。这对于实时监控和数据展示场景尤其有用。 6. **输出格式**:JFreeChart不仅可以绘制在屏幕上,还可以...
《JFreeChart 1.0.6 Demo源码解析与应用》 JFreeChart是一款流行的开源Java库,用于创建各种类型的图表,如折线图、柱状图、饼图、散点图等。在Java开发中,JFreeChart被广泛用于数据分析和可视化,尤其在报表系统...
**JFreeChart GUI Demo** **概述** `JFreeChart` 是一个开源的Java库,用于创建高质量的图表,包括柱状图、折线图、饼图等,广泛应用于数据分析和可视化项目。`JFreeChart_GUI_Demo` 提供了一系列示例代码,帮助...
JFreeChart 的一些demo,JFreeChart 是一款免费的 java 图形开发类库。主要用来在 application/ applets/ servlets/jsp/上生成各种图表。JFreeChart是完全开源,并且严格遵循 GNU 的通用公共 许可证,力保JFreeChart...
这个"struts2 + jfreechart demo"是一个实例,展示了如何在Struts2框架中集成并使用JFreeChart来创建动态图表。通过这个示例,我们可以学习到以下关键知识点: 1. **Struts2框架基础**:了解Struts2的核心概念,如...
在1.0.14版本中,其提供的`jfreechart-1.0.14-demo.jar`是一个演示程序,展示了库的各种功能。而`jfreechart-1.0.14.zip`则包含了这个演示程序对应的源代码,对于开发者来说,这是一个宝贵的资源,可以深入理解图表...
《深入解析JFreeChart 1.0.6-Demo源码》 JFreeChart是一款流行的开源Java图表库,它提供了一系列丰富的图表类型,包括折线图、柱状图、饼图、散点图等,广泛应用于数据分析、报表生成以及GUI应用的可视化展示。在...