package com.kettas.xiezq;
import java.awt.Color;
import java.awt.Font;
import java.awt.RenderingHints;
import java.beans.Statement;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.io.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sound.midi.MidiDevice.Info;
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.ValueAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.labels.StandardPieToolTipGenerator;
import org.jfree.chart.labels.StandardXYItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.contour.DefaultContourDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.TextAnchor;
import com.sun.rowset.CachedRowSetImpl;
public class Qshuju1 {
DBConnection db = new DBConnection();// 链接数据库的类
Connection conn = DBConnection.getConnection();
ResultSet rs = null;
PreparedStatement pstm = null;
public DefaultPieDataset getdataset() {// 从数据库中取值,形成饼图的数据组
DefaultPieDataset data = new DefaultPieDataset();
try {
pstm = conn.prepareStatement("select * from tongjitu");
rs = pstm.executeQuery();
while (rs.next()) {
String name = new String(((rs.getString("name")).trim()));
String shuliang = new String(
((rs.getString("shuliang")).trim()));
float sl = Float.parseFloat(shuliang);
data.setValue(name, sl);
}
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
public DefaultCategoryDataset getdataCategory() {// 从数据库中取值,形成柱形图的数据组
DefaultCategoryDataset data = new DefaultCategoryDataset();
try {
rs = new CachedRowSetImpl();
pstm = conn.prepareStatement("select * from tongjitu");
rs = pstm.executeQuery();
while (rs.next()) {
String name = new String(((rs.getString("name")).trim()));
String shuliang = new String(
((rs.getString("shuliang")).trim()));
float sl = Float.parseFloat(shuliang);
data.setValue(sl, name, name);
}
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
public DefaultCategoryDataset getdatazhexian() {// 从数据库中取值,形成折线图的数据组
DefaultCategoryDataset data = new DefaultCategoryDataset();
try {
pstm = conn.prepareStatement("select * from tongjitu");
rs = pstm.executeQuery();
while (rs.next()) {
String name = new String(((rs.getString("name")).trim()));
String shuliang = new String(
((rs.getString("shuliang")).trim()));
float sl = Float.parseFloat(shuliang);
data.setValue(sl, "走势图",name);
}
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
public String getBingURL(HttpServletRequest request,
HttpServletResponse response) {// 形成一个饼图
String filename = null;
try {
PiePlot plot = new PiePlot(getdataset()); // 生成一个3D饼图
// plot.setURLGenerator( new StandardPieURLGenerator( "
// DegreedView.jsp " )); // 设定图片链接
JFreeChart chart = new JFreeChart("程序员学历情况调查表",
JFreeChart.DEFAULT_TITLE_FONT, plot, true);
chart.setBackgroundPaint(Color.white); // 可选,设置图片背景色
//chart.setTitle(" 程序员学历情况调查表"); // 可选,设置图片标题
plot.setToolTipGenerator(new StandardPieToolTipGenerator());
StandardEntityCollection sec = new StandardEntityCollection();
ChartRenderingInfo info = new ChartRenderingInfo(sec);
// PrintWriter w = new PrintWriter(out); // 输出MAP信息
HttpSession session = request.getSession();
filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info,
session);// 500是图片长度,300是图片高度
// String filename=ServletUtilities.saveChartAsJPEG(chart, 500 , 300
// ,info,session);
// ChartUtilities.writeImageMap(w, " map0 " ,info, false );
String graphURL = request.getContextPath()
+ "/servlet/DisplayChart?filename=" + filename;
// 形成的图片地址
return graphURL;
} catch (Exception e) {
System.out.println("异常了!!!");
}
return null;
}
public String getZhuURL(HttpServletRequest request,
HttpServletResponse response) {// 形成一个柱形图
String filename = null;
//String title = "程序员学历情况调查表";
try {
JFreeChart chart = ChartFactory.createBarChart("程序员学历情况调查表", "名称",
"人数", getdataCategory(), PlotOrientation.VERTICAL, true,
true, false);
// ChartFactory.createBarChart( 图表标题, 目录轴的显示标签, 数值轴的显示标签,数据集,
// 图表方向:水平、垂直, 是否显示图例(对于简单的柱状图必须是false), 是否生成工具, 是否生成URL链接);
// chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
// 将文字的抗锯齿关闭.
//CategoryPlot plot = chart.getCategoryPlot();
//CategoryAxis domainAxis = plot.getDomainAxis();
//BarRenderer renderer = new BarRenderer();
//ValueAxis rangeAxis = plot.getRangeAxis();
// PiePlot pie = (PiePlot) chart.getPlot();
/*----------设置标题字体--------------------------*/
// ValueAxis rAxis = plot.getRangeAxis();
// TextTitle textTitle = chart.getTitle();
// textTitle.setFont(new Font("sans-serif", Font.PLAIN, 12));
/*------设置X轴坐标上的文字-----------*/
// domainAxis.setTickLabelFont(new
// Font("sans-serif",Font.PLAIN,12));
/*------设置X轴的标题文字------------*/
// domainAxis.setLabelFont(new Font("sans-serif",Font.PLAIN,12));
/*------设置Y轴坐标上的文字-----------*/
// rAxis.setTickLabelFont(new Font("sans-serif",Font.PLAIN,12));
/*------设置Y轴的标题文字------------*/
// rAxis.setLabelFont(new Font("sans-serif",Font.PLAIN,12));
/*---------设置柱状体上的显示的字体---------*/
// renderer.setItemLabelGenerator(new LabelGenerator(0.0));
//renderer.setItemLabelFont(new Font("sans-serif", Font.PLAIN, 12));
//renderer.setItemLabelsVisible(true);
// 设置每个地区所包含的平行柱的之间距离
//renderer.setItemMargin(0.01);// 为25%
// 显示每个柱的数值,并修改该数值的字体属性
//renderer
// .setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
//renderer.setItemLabelsVisible(true);
//plot.setRenderer(renderer);
// 设置最高的一个 Item 与图片顶端的距离
//rangeAxis.setUpperMargin(0.20);
// 设定背景透明度(0-1.0之间)
// pie.setBackgroundAlpha(0.6f);
// 设定前景透明度(0-1.0之间)
// pie.setForegroundAlpha(0.90f);
chart.setBackgroundPaint(Color.white);// 图示背景颜色
//chart.setTitle("程序员学历情况调查表");
HttpSession session = request.getSession();
filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null,
session);
String graphURL = request.getContextPath