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;
}
}
运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



