JFreeChart最佳實踐:柱狀圖
作者:何楓abc
本文將介紹作者通過Java最佳圖形解決方案JFreeChart實現柱狀圖的詳細過程。
這幾天由于客觀因素(天冷和停電)和主觀因素(項目吃緊,每天都加班到9點,回來也就不想搞了)。就這樣耽擱了好幾天的時間了!不過偶然的機會在網上換到了一篇整理好的API,所以整理常用的柱狀圖就容易多了。里面的封裝方法太多了,一般是很難記住的.很多都要實踐了才知道其作用,這里就直接上代碼了。也好之后備用鞏固學習。
package com.huawei.jfreechart;
- import java.awt.Color;
- import java.awt.Font;
- import org.jfree.chart.ChartFactory;
- import org.jfree.chart.ChartFrame;
- 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.axis.NumberTickUnit;
- import org.jfree.chart.plot.CategoryPlot;
- import org.jfree.chart.plot.PlotOrientation;
- import org.jfree.chart.title.TextTitle;
- import org.jfree.data.category.CategoryDataset;
- import org.jfree.data.category.DefaultCategoryDataset;
- /**
- * @name 何楓
- * @date 2010-12-17
- * @action createBarChart3DTest.java
- * @time 下午10:35:52
- * @package_name com.huawei.jfreechart
- * @project_name jfreechartTest
- */
- public class createBarChart3DTest {
- private static CategoryDataset getDataSet() {
- DefaultCategoryDataset dataset = new DefaultCategoryDataset();
- dataset.addValue(200, "計劃", "清華大學");
- dataset.addValue(400, "實報", "清華大學");
- dataset.addValue(360, "計劃", "天津大學");
- dataset.addValue(520, "實報", "天津大學");
- dataset.addValue(100, "計劃", "北京大學");
- dataset.addValue(150, "實報", "北京大學");
- dataset.addValue(280, "計劃", "復旦大學");
- dataset.addValue(300, "實報", "復旦大學");
- return dataset;
- }
- public static void main(String[] args) {
- CategoryDataset dataset = getDataSet();
- JFreeChart chart = ChartFactory.createBarChart3D("水果產量圖", "水果產品","銷售數量", dataset, PlotOrientation.VERTICAL, true, true, true);
- ChartFrame frame = new ChartFrame("水果產量圖 ", chart, true);
- // 自定義設定背景色
- // chart.setBackgroundPaint(Color.getHSBColor(23,192,223));
- chart.setBackgroundPaint(Color.WHITE);
- // 獲得 plot:3dBar為CategoryPlot
- CategoryPlot categoryPlot = chart.getCategoryPlot();
- // 設定圖表數據顯示部分背景色
- categoryPlot.setBackgroundPaint(Color.BLACK);
- // 橫坐標網格線
- categoryPlot.setDomainGridlinePaint(Color.RED);
- // 設置網格線可見
- categoryPlot.setDomainGridlinesVisible(true);
- // 縱坐標網格線
- categoryPlot.setRangeGridlinePaint(Color.RED);
- // 重要的類,負責生成各種效果
- // BarRenderer3D renderer=(BarRenderer3D) categoryPlot.getRenderer();
- // 獲取縱坐標
- NumberAxis numberaxis = (NumberAxis) categoryPlot.getRangeAxis();
- // 設置縱坐標的標題字體和大小
- numberaxis.setLabelFont(new Font("黑體", Font.CENTER_BASELINE, 24));
- // 設置叢坐標的坐標值的字體顏色
- numberaxis.setLabelPaint(Color.BLACK);
- // 設置叢坐標的坐標軸標尺顏色
- numberaxis.setTickLabelPaint(Color.RED);
- // 坐標軸標尺顏色
- numberaxis.setTickMarkPaint(Color.BLUE);
- // 叢坐標的默認間距值
- // numberaxis.setAutoTickUnitSelection(true);
- // 設置叢坐標間距值
- numberaxis.setAutoTickUnitSelection(false);
- numberaxis.setTickUnit(new NumberTickUnit(150));
- // 獲取橫坐標
- CategoryAxis domainAxis = categoryPlot.getDomainAxis();
- // 設置橫坐標的標題字體和大小
- domainAxis.setLabelFont(new Font("宋體", Font.PLAIN, 13));
- // 設置橫坐標的坐標值的字體顏色
- domainAxis.setTickLabelPaint(Color.RED);
- // 設置橫坐標的坐標值的字體
- domainAxis.setTickLabelFont(new Font("宋體", Font.PLAIN, 30));
- // 設置橫坐標的顯示
- domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(0.4));
- // 這句代碼解決了底部漢字亂碼的問題
- chart.getLegend().setItemFont(new Font("黑體", 0, 16));
- // 設置圖例標題
- Font font = new java.awt.Font("黑體", java.awt.Font.CENTER_BASELINE, 50);
- TextTitle title = new TextTitle("項目狀態分布");
- title.getBackgroundPaint();
- title.setFont(font);
- // 設置標題的字體顏色
- title.setPaint(Color.RED);
- chart.setTitle(title);
- frame.pack();
- frame.setVisible(true);
- }
- }
原文鏈接:http://hefeng1987-net-163-com.iteye.com/blog/846041
【編輯推薦】
責任編輯:林師授
來源:
何楓abc的博客