導入必須的兩個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();
}
}
}