chart
来源:互联网 发布:json高亮美化工具 编辑:程序博客网 时间:2024/05/11 22:09
import java.awt.Color;
import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DecimalFormat;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.ui.TextAnchor;
import com.wyebd.www.poi.Poi;
public class Chart {
public String generateTiao(String title, String x, String y, String data[][],
HttpServletResponse response, String show) throws IOException {
String result = "yes";
if (show.equalsIgnoreCase("Line")) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
int total = 0;
//System.out.println("****"+data.length);
for (int i1 = 1; i1 < data.length; i1++) {
int count = 0;
for (int i = 1; i < data[0].length; i++) {
if (data[i1][i]==null||"empty".equalsIgnoreCase(data[i1][i])) {
count++;
} else {
dataset.addValue(Double.parseDouble(data[i1][i]),
data[i1][0], data[0][i]);
}
}
//System.out.println("****"+data[1][2]);
if (count >= (data[0].length - 1)) {
total++;
}
}
if (total >= (data.length - 1)) {
result = "no";
} else {
// 定义图表对象
JFreeChart chart = ChartFactory.createLineChart(title, // chart
// title
x, // domain axis label
y, // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend
true, // tooltips
false // urls
);
CategoryPlot plot = chart.getCategoryPlot();
// customise the range axis...
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis
.createIntegerTickUnits());
rangeAxis.setAutoRangeIncludesZero(true);
rangeAxis.setUpperMargin(0.20);
rangeAxis.setLabelAngle(Math.PI / 2.0);
// 获得renderer 注意这里是下嗍造型到lineandshaperenderer!!
LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) plot
.getRenderer();
//点(即数据点)可见
lineandshaperenderer.setShapesVisible(true);
DecimalFormat decimalformat1 = new DecimalFormat("##.#");//数据点显示数据值的格式
lineandshaperenderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", decimalformat1));
//上面这句是设置数据项标签的生成器
lineandshaperenderer.setItemLabelsVisible(true);//设置项标签显示
lineandshaperenderer.setBaseItemLabelsVisible(true);//基本项标签显示
//上面这几句就决定了数据点按照设定的格式显示数据值
lineandshaperenderer.setShapesFilled(Boolean.TRUE);//在数据点显示实心的小图标
lineandshaperenderer.setShapesVisible(true);//设置显示小图标
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),
chart, 640, 400);
}
} else if (show.equalsIgnoreCase("Bar")) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
int total = 0;
for (int i1 = 1; i1 < data.length; i1++) {
int count = 0;
for (int i = 1; i < data[0].length; i++) {
if (data[i1][i]==null||"empty".equalsIgnoreCase(data[i1][i])) {
count++;
} else {
dataset.addValue(Double.parseDouble(data[i1][i]),
data[i1][0], data[0][i]);
}
}
if (count >= (data[0].length - 1)) {
total++;
}
}
if (total >= (data.length - 1)) {
result = "no";
} else {
JFreeChart chart = ChartFactory.createStackedBarChart3D(title,
x, y, dataset, PlotOrientation.VERTICAL, true, false,
false);
CategoryPlot plot = chart.getCategoryPlot(); // 获得
// plot:CategoryPlot!!
ValueAxis rangeAxis = plot.getRangeAxis();
// 设置最高的一个柱与图片顶端的距离:
rangeAxis.setUpperMargin(0.15);
// 设置最低的一个柱与图片底端的距离:
rangeAxis.setLowerMargin(0.15);
// 设置图形上显示的数值
BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseOutlinePaint(Color.BLACK);
// 设置每个地区所包含的平行柱之间的距离
renderer.setItemMargin(0.1);
renderer.setItemLabelAnchorOffset(15D);//值与柱顶的距离
renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
// 显示每个柱的数值,并修改该数值的字体属性
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelFont(new Font("黑体", Font.PLAIN, 12));
renderer.setItemLabelsVisible(true);
renderer.setMaximumBarWidth(0.10);
plot.setRenderer(renderer);
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),
chart, 640, 400);
}
} else if (show.equalsIgnoreCase("Pie")) {
DefaultPieDataset piedata = new DefaultPieDataset();
int out_l = data.length;
int in_l = data[0].length;
int count = 0;
try{
for (int i=1;i<out_l;i++) {
if(in_l>2){
int in_count = 0;
for(int j=1;j<in_l;j++){
if (data[i][j]==null||("empty").equalsIgnoreCase(data[i][j])) {
in_count++;
} else {
piedata.setValue(data[0][j], Double.parseDouble(data[i][j]));
}
}
if(in_count>=in_l-1){
result = "no";
}
}else{
if (data[i][1]==null||("empty").equalsIgnoreCase(data[i][1])) {
count++;
} else {
piedata.setValue(data[i][0], Double.parseDouble(data[i][1]));
}
}
}
}catch(Exception e){
e.printStackTrace();
}
if (count >= out_l - 1) {
result = "no";
} else {
// 3D饼图
PiePlot3D plot = new PiePlot3D(piedata);
// 指定图片的透明度
plot.setForegroundAlpha(1.0f);
// 指定显示的饼图上圆形(false)还椭圆形(true)
plot.setCircular(false);
JFreeChart chart = new JFreeChart("",
JFreeChart.DEFAULT_TITLE_FONT, plot, true);
chart.setTitle(new TextTitle(title, new Font("宋体", Font.BOLD,
25)));
chart.setBackgroundPaint(Color.white);
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),
chart, 640, 400);
}
}
return result ;
}
}
- chart
- Chart
- chart
- chart
- Chart
- chart初始
- DHTML Chart
- ASCII Chart
- flex chart
- 转 Chart
- flash chart
- Jfree Chart
- MS Chart
- silverlight chart
- Chart 报表
- chart控件
- Extjs Chart
- JS Chart
- 都是卡巴斯基惹得祸
- 设计模式---单件(C++版) 比较通用的单件模式(STL实现)
- Data Access Application Block for .NET(转自MSDN)
- HTML与CSS在应用中的一些规范
- VC显示加载DLL
- chart
- 使用传统输入设备唤醒
- 动态抓取屏幕
- 加密解密
- 计算机核心期刊新排名
- jacob测试
- 超级实用且不花哨的js代码大全
- 程序员创业失败的主要原因
- 开博