栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jfreechart画折线图的方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jfreechart画折线图的方法

JFreeChart 是开放源代码站点SourceForge.net 上的一个 JAVA 项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图 ( 普通柱状图以及堆栈柱状图 )、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。

应用jfreechart来画图需要两个jar包:jfreechart.jar和jcommon.jar,下载地址。

下面是一个画折线图的例子:

package yuth.jfree.demo; 
 
import java.awt.BasicStroke; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Font; 
import java.awt.geom.Ellipse2D; 
import java.io.File; 
import java.io.IOException; 
import java.net.URL; 
import java.text.DecimalFormat; 
import java.util.Random; 
 
import javax.swing.ImageIcon; 
import javax.swing.JPanel; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.ChartUtilities; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.axis.CategoryAxis; 
import org.jfree.chart.axis.CategoryLabelPositions; 
import org.jfree.chart.axis.NumberAxis; 
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; 
import org.jfree.chart.plot.CategoryPlot; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.chart.renderer.category.LineAndShapeRenderer; 
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.RectangleEdge; 
import org.jfree.ui.RectangleInsets; 
import org.jfree.ui.RefineryUtilities; 
 
public class LineChartDemo1 extends Applicationframe { 
 
 private static final long serialVersionUID = -6354350604313079793L; 
 static Class class$demo$LineChartDemo1; 
 
 public LineChartDemo1(String string) { 
  super(string); 
 JPanel jpanel = createDemoPanel(); 
 jpanel.setPreferredSize(new Dimension(500, 270)); 
  setContentPane(jpanel); 
 } 
 
 
 
  
 private static CategoryDataset createDataset() { 
 DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset(); 
 //defaultcategorydataset.addValue()的参数解析:(数值,图例名,横坐标值) 
 
/  
  
 return defaultcategorydataset; 
 } 
 
 private static JFreeChart createChart(CategoryDataset categorydataset) { 
 JFreeChart jfreechart = ChartFactory.createLineChart( 
  "jfreechart test",// 图表标题 
  "X", // 主轴标签(x轴) 
  "Y",// 范围轴标签(y轴) 
  categorydataset, // 数据集 
  PlotOrientation.VERTICAL,// 方向 
  false, // 是否包含图例 
  true, // 提示信息是否显示 
  false);// 是否使用urls 
  
 // 改变图表的背景颜色 
 jfreechart.setBackgroundPaint(Color.white); 
  
 CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot(); 
 categoryplot.setBackgroundPaint(Color.lightGray); 
 categoryplot.setRangeGridlinePaint(Color.white); 
 categoryplot.setRangeGridlinesVisible(false); 
 
 //修改范围轴。 我们将默认刻度值 (允许显示小数) 改成只显示整数的刻度值。 
 NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis(); 
 numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); 
  
 // 设置X轴上的Lable让其45度倾斜 
 CategoryAxis domainAxis = categoryplot.getDomainAxis(); 
 domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 设置X轴上的Lable让其45度倾斜 
  domainAxis.setLowerMargin(0.0); // 设置距离图片左端距离 
  domainAxis.setUpperMargin(0.0); // 设置距离图片右端距离 
  
  
  
 LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryplot 
  .getRenderer(); 
 lineandshaperenderer.setShapesVisible(true); 
 lineandshaperenderer.setDrawOutlines(true); 
 lineandshaperenderer.setUseFillPaint(true); 
 lineandshaperenderer.setbaseFillPaint(Color.white); 
 lineandshaperenderer.setSeriesStroke(0, new BasicStroke(3.0F)); 
 lineandshaperenderer.setSeriesOutlineStroke(0, new BasicStroke(2.0F)); 
 lineandshaperenderer.setSeriesShape(0, new Ellipse2D.Double(-5.0, -5.0, 
  10.0, 10.0)); 
 lineandshaperenderer.setItemMargin(0.4); //设置x轴每个值的间距(不起作用??) 
  
 // 显示数据值 
 DecimalFormat decimalformat1 = new DecimalFormat("##.##");// 数据点显示数据值的格式 
 lineandshaperenderer.setbaseItemLabelGenerator(new StandardCategoryItemLabelGenerator( 
  "{2}", decimalformat1));// 设置数据项标签的生成器 
 lineandshaperenderer.setbaseItemLabelsVisible(true);// 基本项标签显示 
 lineandshaperenderer.setbaseShapesFilled(true);// 在数据点显示实心的小图标 
   
  
 return jfreechart; 
 } 
 
 public static JPanel createDemoPanel() { 
 JFreeChart jfreechart = createChart(createDataset()); 
 
 try { 
  ChartUtilities.saveChartAsJPEG( 
   new File("D:/LineChartDemo1.png"), //文件保存物理路径包括路径和文件名 
   // 1.0f, //图片质量 ,0.0f~1.0f 
   jfreechart, //图表对象 
   1024, //图像宽度 ,这个将决定图表的横坐标值是否能完全显示还是显示省略号 
   768); 
 } catch (IOException e) { 
  // TODO Auto-generated catch block 
  e.printStackTrace(); 
 } //图像高度 
   
 return new ChartPanel(jfreechart); 
 } 
 
 public static void main(String[] strings) { 
 LineChartDemo1 linechartdemo1 = new LineChartDemo1( 
  "JFreeChart - Line Chart Demo 1"); 
 linechartdemo1.pack(); 
 RefineryUtilities.centerframeonScreen(linechartdemo1); 
 linechartdemo1.setVisible(true); 
 } 
 
  
 static Class class$(String string) { 
 Class var_class; 
 try { 
  var_class = Class.forName(string); 
 } catch (ClassNotFoundException classnotfoundexception) { 
  throw new NoClassDefFoundError(classnotfoundexception.getMessage()); 
 } 
 return var_class; 
 } 
} 

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/140668.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号