import java.io.*;import org.jfree.data.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;class BarChartDemo { public static void main(String[] args) throws IOException{ CategoryDataset dataset = getDataSet2();
JFreeChart chart = ChartFactory.createBarChart3D(
"水果产量图", // 图表标题
"水果", // 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
FileOutputStream fos_jpg = null;
try {
fos_jpg = new FileOutputStream("D:\\fruit.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);
} finally {
try {
fos_jpg.close();
} catch (Exception e) {}
}
}
/**
* 获取一个演示用的简单数据集对象
* @return
*/
private static CategoryDataset getDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, null, "苹果");
dataset.addValue(200, null, "梨子");
dataset.addValue(300, null, "葡萄");
dataset.addValue(400, null, "香蕉");
dataset.addValue(500, null, "荔枝");
return dataset;
}
}
请问如何在这个图中,将数据显示在每一个柱子的顶端?
import org.jfree.chart.*;
import org.jfree.chart.plot.*;class BarChartDemo { public static void main(String[] args) throws IOException{ CategoryDataset dataset = getDataSet2();
JFreeChart chart = ChartFactory.createBarChart3D(
"水果产量图", // 图表标题
"水果", // 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
FileOutputStream fos_jpg = null;
try {
fos_jpg = new FileOutputStream("D:\\fruit.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);
} finally {
try {
fos_jpg.close();
} catch (Exception e) {}
}
}
/**
* 获取一个演示用的简单数据集对象
* @return
*/
private static CategoryDataset getDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, null, "苹果");
dataset.addValue(200, null, "梨子");
dataset.addValue(300, null, "葡萄");
dataset.addValue(400, null, "香蕉");
dataset.addValue(500, null, "荔枝");
return dataset;
}
}
请问如何在这个图中,将数据显示在每一个柱子的顶端?
BarRenderer3D renderer = new BarRenderer3D();
//显示每个柱的数值,并修改该数值的字体属性
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelFont(new Font("黑体", Font.PLAIN, 12));
renderer.setItemLabelsVisible(true);
plot.setRenderer(renderer);
BarChart bc=new BarChart();
fileName=bc.getPictureName();
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileName;%>
<body>
<%=graphURL %>
<%=fileName %>
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import java.text.DecimalFormat;import java.awt.Color;
import java.awt.GradientPaint;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.servlet.ServletUtilities;import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.entity.StandardEntityCollection;//import org.jfree.chart.axis.CategoryAxis;import DB.jdbc_DB;public class BarChart extends HttpServlet {
private static final long serialVersionUID = 1L; static ResultSet rs; private static String PictureName = null; public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException { res.setContentType("image/png");
HttpSession session = req.getSession(); CategoryDataset dataset = createDataset(); JFreeChart chart = createChart(dataset); String filename = null;
/*
* DefaultCategoryDataset dataset = new DefaultCategoryDataset();
* dataset.addValue(300, "广州", "苹果"); dataset.addValue(200, "广州", "梨子");
* dataset.addValue(500, "广州", "葡萄"); dataset.addValue(340, "广州", "芒果");
* dataset.addValue(280, "广州", "?枝");
*/
// ChartRenderingInfo info = new ChartRenderingInfo();
CharArrayWriter cawMap = new CharArrayWriter();
PrintWriter pwMap = new PrintWriter(cawMap);
// ChartUtilities.writeImageMap(pwMap,"mapname",info, false);
//String sMap = cawMap.toString(); ChartRenderingInfo info = new ChartRenderingInfo(
new StandardEntityCollection()); filename = ServletUtilities.saveChartAsPNG(chart, 600, 400, info,
session);
setPictureName(filename);
// Write the image map to the PrintWriter
// ChartUtilities.writeImageMap(pwMap, filename, info, null, null);
// Write the image map to the PrintWriter
ChartUtilities.writeImageMap(pwMap, filename, info, true); pwMap.flush();
//ChartUtilities.writeChartAsPNG(res.getOutputStream(), chart, 600, 400);
// ChartUtilities.writeChartAsJPEG(res.getOutputStream(), 300, chart,
// 800,
// 500, null); } public String setPictureName(String file) {
return this.PictureName = file;
} public String getPictureName() {
return this.PictureName;
} private static CategoryDataset createDataset() {
// row keys...
String series1 = "First";
String series2 = "Second";
//String series3 = "Third";
// String series4 = "Four"; // column keys...
//String category1 = "Category 1";
// String category2 = "Category 2";
// String category3 = "Category 3";
//String category4 = "Category 4";
//String category5 = "Category 5"; // create the dataset...
rs = jdbc_DB.query("select * from Jchart_Column where write >0 ");
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
try {
while (rs.next()) {
dataset.addValue(Double.parseDouble(rs.getString(6)), series1,
rs.getString(3));
dataset.addValue(Double.parseDouble(rs.getString(5)), series2,
rs.getString(3));
//dataset.addValue(Double.parseDouble(rs.getString(3)),series2,rs.getString(1));
//dataset.addValue(Double.parseDouble(rs.getString(5)),series3,rs.getString(1));
//dataset.addValue(Double.parseDouble(rs.getString(5)),series4,rs.getString(1));
}
} catch (Exception e) {
System.out.print("SQL " + e);
} /*
dataset.addValue(1.0, series1, category1);
dataset.addValue(4.0, series1, category2);
dataset.addValue(3.0, series1, category3);
dataset.addValue(5.0, series1, category4);
dataset.addValue(5.0, series1, category5); dataset.addValue(5.0, series2, category1);
dataset.addValue(7.0, series2, category2);
dataset.addValue(6.0, series2, category3);
dataset.addValue(8.0, series2, category4);
dataset.addValue(4.0, series2, category5);
*/
return dataset; } private static JFreeChart createChart(CategoryDataset dataset) { // create the chart...
JFreeChart chart = ChartFactory.createBarChart("ポート - 転送レート",
// chart title
"番号", // domain axis label
"転送レート", // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend colour show
true, // tooltips?
true // URLs?
); // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART... // set the background color for the chart...
chart.setBackgroundPaint(Color.white); // get a reference to the plot for further customisation...
CategoryPlot plot = chart.getCategoryPlot(); ValueAxis rangeAxis2 = plot.getRangeAxis(); // ?置最高的一个 Item 与?片?端的距?
rangeAxis2.setUpperMargin(0.15);
// ?置最低的一个 Item 与?片底端的距?
rangeAxis2.setLowerMargin(10.00); plot.setRangeAxis(rangeAxis2); plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setDomainGridlinesVisible(true);
plot.setRangeGridlinePaint(Color.white); // set the range axis to display integers only...
final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); // disable bar outlines...
BarRenderer renderer = (BarRenderer) plot.getRenderer(); renderer.setDrawBarOutline(false);
renderer
.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator(
"{2}", new DecimalFormat()));
// /renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator(StandardCategoryToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT_STRING, new DecimalFormat()));
renderer.setItemMargin(0.01);
GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 0.0f,
0.0f, new Color(0, 0, 64));
GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green, 0.0f,
0.0f, new Color(0, 64, 0));
renderer.setSeriesPaint(0, gp0);
renderer.setSeriesPaint(1, gp1);
// org.jfree.chart.axis.CategoryAxis dataset 生成的 3D 柱状?
CategoryAxis domainAxis = plot.getDomainAxis();
// ?置距??片left距?
domainAxis.setLowerMargin(0.05);
// ?置距??片右端距?
domainAxis.setUpperMargin(0.05);
plot.setDomainAxis(domainAxis);
plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
plot.setRangeAxisLocation(AxisLocation.TOP_OR_LEFT); return chart;
}
}