|

在這里要注意,如果柱子上的數(shù)字位數(shù)過大,而圖的寬度又不夠,數(shù)字就不會顯示了。
要注意調(diào)整~
參考代碼:
List<UserCount> list = manager.getTotalStatus(region.getId(), 0);
double[][] data = new double[2][7];
String[] rowKeys =
 { "能瀪母豬", "奶牛" };
String[] columnKeys =
 { "承保員", "錄入員", "查勘員", "理算員", "核賠員", "審核員", "管理員" };
// 填充數(shù)據(jù)源
for (int i = 0; i < list.size(); i++)
 {
UserCount uc = list.get(i);
// id為0為統(tǒng)計記錄
if (uc.getRegionId() == 0)
 {
data[0][0] = uc.getPigUnderWriter();
data[0][1] = uc.getPigRecorder();
data[0][2] = uc.getPigSurveyor();
data[0][3] = uc.getPigClaimer();
data[0][4] = uc.getPigVerifier();
data[0][5] = uc.getPigAssessor();
data[0][6] = uc.getPigAdmin();

data[1][0] = uc.getOxUnderWriter();
data[1][1] = uc.getOxRecorder();
data[1][2] = uc.getOxSurveyor();
data[1][3] = uc.getOxClaimer();
data[1][4] = uc.getOxVerifier();
data[1][5] = uc.getOxAssessor();
data[1][6] = uc.getOxAdmin();
break;

}
}

CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
rowKeys, columnKeys, data);
JFreeChart chart = ChartFactory.createBarChart3D("人員總體狀況圖表", "",
"數(shù)量(人)", dataset, PlotOrientation.VERTICAL, true, false, false);
// 背景色
chart.setBackgroundPaint(Color.WHITE);
// 設置標題內(nèi)容及樣式
chart
.setTitle(new TextTitle("人員總體狀況圖表", new Font("黑體", Font.BOLD,
14)));

CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.LIGHT_GRAY);
plot.setRangeGridlinePaint(Color.black);

ValueAxis rangeAxis = plot.getRangeAxis();
// 設置最高的一個 Item 與圖片頂端的距離
rangeAxis.setUpperMargin(0.15);
// 設置最低的一個 Item 與圖片底端的距離
rangeAxis.setLowerMargin(0.15);
plot.setRangeAxis(rangeAxis);

BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseOutlinePaint(Color.BLACK);
// 設置 Wall 的顏色
renderer.setWallPaint(Color.LIGHT_GRAY);
// 設置每種角色代表的柱的顏色
// 對于自定義顏色也可以用 Color.decode("#124f21");
renderer.setSeriesPaint(0, new Color(255, 102, 0));
renderer.setSeriesPaint(1, Color.YELLOW);
// 設置每種角色代表的柱的 Outline 顏色
renderer.setSeriesOutlinePaint(0, Color.BLACK);
renderer.setSeriesOutlinePaint(1, Color.BLACK);
// 設置每個地區(qū)所包含的平行柱的之間距離
renderer.setItemMargin(0.1);
// 設置是否顯示數(shù)字(柱子上)
renderer
.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
// 柱子上字體的樣式
renderer.setBaseItemLabelFont(new Font("黑體", Font.PLAIN, 9));
renderer.setBaseItemLabelsVisible(true);
plot.setRenderer(renderer);

// 設置柱的透明度
plot.setForegroundAlpha(0.9f);
// 設置地區(qū)、數(shù)量的顯示位置
plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
plot.setRangeAxisLocation(AxisLocation.TOP_OR_LEFT);

Random r = new Random();
this.imagePath = "/images/chart/userCountBarChart" + r.nextInt()
+ ".png";
String path = this.getFullPath() + imagePath;
ChartUtilities.saveChartAsPNG(new File(path), chart, 700, 300);
|