jfreechart 柱状图与折线图结合

导入必须的两个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();
}
}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值