您的位置:首页 > 其它

jfreechart 柱状图与折线图结合

2013-08-27 14:40 519 查看
导入必须的两个jar包jcommon-1.0.16.jar、jfreechart-1.0.13.jar

web.xml里加入

<servlet>

<servlet-name>DisplayChart</servlet-name>

<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>DisplayChart</servlet-name>

<url-pattern>/servlet/DisplayChart</url-pattern>

</servlet-mapping>

·····························································································································································

import java.awt.Color;

import java.awt.Font;

import java.io.File;

import java.io.IOException;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.ChartUtilities;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.StandardChartTheme;

import org.jfree.chart.axis.CategoryAxis;

import org.jfree.chart.axis.CategoryLabelPositions;

import org.jfree.chart.axis.ValueAxis;

import org.jfree.chart.labels.StandardCategoryToolTipGenerator;

import org.jfree.chart.plot.CategoryPlot;

import org.jfree.chart.plot.DatasetRenderingOrder;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.chart.renderer.category.LineAndShapeRenderer;

import org.jfree.data.category.DefaultCategoryDataset;

/*

* 绘制柱状图

* */

public class BarChart3DDemo {

public static void main(String[] args) {

try {

// 设置主题

StandardChartTheme standardChartTheme = new StandardChartTheme("name");//这里的"name"参数;是什么意思我也不知道,反正这样可以用

standardChartTheme.setLargeFont(new Font("楷体",Font.BOLD, 12));//可以改变轴向的字体

standardChartTheme.setRegularFont(new Font("宋体",Font.BOLD, 12));//可以改变图例的字体

standardChartTheme.setExtraLargeFont(new Font("隶书",Font.BOLD, 12));//可以改变图标的标题字体

ChartFactory.setChartTheme(standardChartTheme);//Theme.getTheme()

// 构造数据

DefaultCategoryDataset dataset = new DefaultCategoryDataset();//柱状图数据

DefaultCategoryDataset lineDataset = new DefaultCategoryDataset();//折线图数据

dataset.addValue(100, "公司本部面积", "北京");

dataset.addValue(700, "公司本部面积", "田径");

dataset.addValue(300, "公司本部面积", "苏州");

dataset.addValue(400, "公司本部面积", "杭州");

dataset.addValue(500, "公司本部面积", "大连");

dataset.addValue(600, "公司本部面积", "合肥");

lineDataset.addValue(100, "出售资产", "北京");

lineDataset.addValue(200, "出售资产", "田径");

lineDataset.addValue(600, "出售资产", "苏州");

lineDataset.addValue(400, "出售资产", "杭州");

lineDataset.addValue(700, "出售资产", "大连");

lineDataset.addValue(600, "出售资产", "合肥");

JFreeChart chart = ChartFactory.createBarChart("编程语言统计",

"语言",// 目录轴的显示标签

"学习人数", // 数值轴的显示标签

dataset,// 数据集

PlotOrientation.VERTICAL,// 图表方向:水平、垂直

true,// 是否显示图例(对于简单的柱状图必须是false)

true,//是否生成工具

false);// 是否生成URL链接

chart.getTitle().setFont(new Font("隶书", Font.BOLD, 26));//设置title标题

chart.setBackgroundPaint(new Color(238, 238, 255));//设置背景色

chart.getLegend().setItemFont(new Font("隶书", Font.BOLD, 18));// 底部

CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();//图本身

categoryplot.setDataset(1, lineDataset);//放折线图数据

LineAndShapeRenderer lineandshaperenderer = new LineAndShapeRenderer();

lineandshaperenderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());

categoryplot.setRenderer(1, lineandshaperenderer);

ValueAxis valueAxis = categoryplot.getRangeAxis();

valueAxis.setLabelFont(new Font("黑体", Font.ITALIC, 18)); // 设置数据字体(纵轴)

CategoryAxis categoryaxis = categoryplot.getDomainAxis();

categoryaxis.setLabelFont(new Font("黑体", Font.ITALIC, 18)); // 设置时字体(横轴)

categoryaxis.setLowerMargin(0.0); // 柱状图和纵轴紧靠

categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45);

categoryplot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);//折线在柱面前面显示

ChartUtilities.saveChartAsPNG(new File("D:/BarChart3D.png"),

chart, 800, 500);

System.out.println("绘图完成");

} catch (IOException e) {

e.printStackTrace();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: