📄 webchart.java
字号:
package demo.chart;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.PrintWriter;
import java.text.DecimalFormat;
import java.text.NumberFormat;
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.entity.StandardEntityCollection;
import org.jfree.chart.labels.StandardPieItemLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.PieDataset;
public class WebChart {
private Font titleFont = new Font("黑体",Font.CENTER_BASELINE,18);
private PieDataset piedata;
public void setValue(PieDataset piedata) {
this.piedata = piedata;
}
public String generatePieChart3D(String title,
HttpSession session,
PrintWriter pw) {
String filename = null;
String unitSytle = "{0}={1}({2})";
try {
JFreeChart chart = ChartFactory.createPieChart3D("饼型图", // chart title
piedata, // data
true, // include legend
true,
false
);
//设置图片的背景色
chart.setBackgroundPaint(new Color(215,215,215));
//设置透明度,好像对servlet没有用
chart.setBackgroundImageAlpha(0.5f);
//设置图片标题的字体和大小
TextTitle _title = new TextTitle(title);
_title.setFont(titleFont);
chart.setTitle(_title);
PiePlot plot = (PiePlot) chart.getPlot();
plot.setNoDataMessage("无对应的数据,请重新查询。");
plot.setNoDataMessagePaint(Color.red);
//指定 section 轮廓线的厚度(OutlinePaint不能为null)
plot.setOutlineStroke(new BasicStroke(0));
//设置第一个 section 的开始位置,默认是12点钟方向
plot.setStartAngle(90);
plot.setToolTipGenerator(new StandardPieItemLabelGenerator(unitSytle,
NumberFormat.getNumberInstance(),
new DecimalFormat("0.00%")));
//指定图片的透明度
plot.setForegroundAlpha(0.65f);
//引出标签显示样式
plot.setLabelGenerator(new StandardPieItemLabelGenerator(unitSytle,
NumberFormat.getNumberInstance(),
new DecimalFormat("0.00%")));
//图例显示样式
plot.setLegendLabelGenerator(new StandardPieItemLabelGenerator(unitSytle,
NumberFormat.getNumberInstance(),
new DecimalFormat("0.00%")));
//把生成的图片放到临时目录
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
//设置图片名称前缀
ServletUtilities.setTempFilePrefix("chart-");
//500是图片长度,300是图片高度
filename = ServletUtilities.saveChartAsPNG(chart, 600, 350, info, session);
ChartUtilities.writeImageMap(pw, filename, info, false);
pw.flush();
System.out.println(System.getProperty("java.io.tmpdir") + filename);
} catch (Exception e) {
System.out.println("Exception - " + e.toString());
e.printStackTrace(System.out);
filename = "public_error_600x350.png";
}
return filename;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -