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