package to._2v.commons.chart;
import java.awt.Color;
import java.awt.Font;
import java.awt.Paint;
import java.io.OutputStream;
import java.text.NumberFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.DateTickMarkPosition;
import org.jfree.chart.axis.DateTickUnit;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.AbstractXYItemLabelGenerator;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.labels.XYItemLabelGenerator;
import org.jfree.chart.plot.DatasetRenderingOrder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.ClusteredXYBarRenderer;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.time.*;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.TextAnchor;
public class BarTimeTool {
//设置基本设置
private IntervalXYDataset lineDataset = new TimeSeriesCollection() ; //时间曲线数据集合
private IntervalXYDataset barDataset = new TimeSeriesCollection(); //时序柱状图
private String headingTitle ; //图表总标题
private String subtitle ; //图表子标题
private String domainAxis; //目录轴的显示标签(底边和上边)
private String valueAxis; // 数值轴的显示标签(侧边)
private boolean picDirection = true; //图标方向,true:水平PlotOrientation.VERTICAL;
//false:垂直PlotOrientation.HORIZONTAL
private boolean showLegend = true; // 是否显示图例(对于简单的柱状图必须是false)
private boolean generatorTool = false; // 是否生成工具
private boolean generatorURL = false; // 是否生成URL链接
//字体设置
private Font headingTitleFont = new Font("宋体",Font.PLAIN,15); //总标题字体
private Font subtitleFont = new Font("宋体",Font.PLAIN,15); //子标题字体
private Font bottomFont = new Font("宋体",Font.PLAIN,15); //底部标题字体
private Font picFont = new Font("宋体",Font.PLAIN,15); //图形中的字体
private Paint backgroundPaint = Color.gray ; //背景颜色
private float backgroundAlpha = 0.3f ; //背景颜色透明度
private Paint domainGridlinePaint = Color.gray ; //分类轴网格线条颜色
private Paint rangeGridlinePaint = Color.gray ; //数据轴网格线条颜色
//时间轴的日期格式设置
private DateTickUnit dateStyle = null ;
//时间轴 是否垂直
private boolean isVerticalTickLabels = true ;
//柱子的颜色
private Map< Integer ,Paint> barColor = null ;
//柱子的宽度
private double maxBarWidth = 1 ;
//线图的颜色
private Paint lineColor = null ;
//柱子数值显示范围
private int bar_big = 0 ;
private int bar_small = 0 ;
//线图的数值显示范围
private int line_big = 0 ;
private int line_small = 0 ;
//线图是否显示数据的点
private boolean shapesVisible = true ;
//生成JFreeChart图形
public JFreeChart generatorChart(){
JFreeChart chart = ChartFactory.createXYBarChart(
getHeadingTitle(), // 图表标题
getDomainAxis() , // 目录轴的显示标签
true ,
getValueAxis() , // 数值轴的显示标签
getBarDataset(), // 数据集
PlotOrientation.VERTICAL, //
true,//getShowLegend(), // 是否显示图例(
true,//getGeneratorTool(), // 是否生成工具
false//getGeneratorURL() // 是否生成URL链接);
);
XYPlot plot = (XYPlot) chart.getPlot();
//设置bar为平行。。。
plot.setDomainPannable(true);
plot.setRangePannable(true);
ClusteredXYBarRenderer clusteredxybarrenderer = new ClusteredXYBarRenderer(0.0D, false);
plot.setRenderer(clusteredxybarrenderer);
clusteredxybarrenderer.setDrawBarOutline(false);
XYItemRenderer xyitem = plot.getRenderer();
//设置网格背景颜色
// plot.setBackgroundPaint(Color.white);
//设置网格竖线颜色
plot.setDomainGridlinePaint(Color.white);
//设置网格横线颜色
plot.setRangeGridlinePaint(Color.white);
//设置曲线图与xy轴的距离
plot.setAxisOffset(new RectangleInsets(0D, 0D, 0D, 10D));
//设置每个柱子的颜色
if( barColor!=null ){
Iterator<Entry<Integer, Paint>> it = barColor.entrySet().iterator();
while( it.hasNext() ) {
Entry<Integer,Paint> entry = it.next();
int key = entry.getKey();
Paint value = entry.getValue();
xyitem.setSeriesPaint(key,value);//计划线条的颜色
}
}
//设置轴颜色
plot.setDomainGridlinePaint(domainGridlinePaint) ; //分类轴网格线条颜色
plot.setRangeGridlinePaint(rangeGridlinePaint); //数据轴网格线条颜色
//设置背景颜色和透明度
plot.setBackgroundPaint( getBackgroundPaint() );
plot.setBackgroundAlpha( getBackgroundAlpha() );
/*---------------------------设置字体:防口字乱码----------------------------------*/
ValueAxis domainAxis = plot.getDomainAxis();
domainAxis.setVisible(true);
domainAxis.setVerticalTickLabels( getVerticalTickLabels() );//设置时间轴是否垂直
// domainAxis.setLowerMargin(0.5);
//设置X轴坐标上的文字
domainAxis.setTickLabelFont( getPicFont() );
//设置X轴的标题文字
domainAxis.setLabelFont( getPicFont() );
//设置时间轴的时间显示方式 new DateTickUnit(DateTickUnitType.MONTH, 1, new SimpleDateFormat("MM-yyyy"))
DateAxis dateaxis = (DateAxis)domainAxis;
dateaxis.setTickUnit( dateStyle );
plot.setDomainAxis(domainAxis);
ValueAxis rAxis = plot.getRangeAxis();
//设置Y轴坐标上的文字
rAxis.setTickLabelFont( getPicFont() );
//设置Y轴的标题文字
rAxis.setLabelFont( getPicFont() );
//设置字体: 线条或者柱状的说明
chart.getLegend().setItemFont( getBottomFont() );
//设置子标题
TextTitle subtitle = new TextTitle( getSubtitle() , getSubtitleFont() );
chart.addSubtitle(subtitle);
//设置主标题
chart.setTitle(new TextTitle( getHeadingTitle() , getHeadingTitleFont()) );
chart.setAntiAlias(true);
//显示每个柱的数值,并修改该数值的字体属性
XYItemRenderer categoryitemrenderer = (XYItemRenderer) plot.getRenderer();
XYBarRenderer renderer2 = (XYBarRenderer)categoryitemrenderer;
renderer2.setMargin( 0.1 ); // 设置柱子的间隔
categoryitemrenderer.setBaseItemLabelGenerator(new LabelGenerator(getBar_big(),getBar_small()));
categoryitemrenderer.setBaseItemLabelsVisible(true);
categoryitemrenderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
/*--------------------------------------线图设置-------------------------------------*/
if( getLineDataset().getSeriesCount() > 0 ){
IntervalXYDataset categorydataset = (IntervalXYDataset)getLineDataset(); //getLineDataset ; getBarDataset();
plot.setDataset(1, categorydataset);
// NumberAxis numberaxis = new NumberAxis("");
// plot.setRangeAxis(1, numberaxis); //线图右侧的�
没有合适的资源?快使用搜索试试~ 我知道了~
java導出excel 經典例子與先關包
共194个文件
svn-base:92个
jar:24个
java:22个
需积分: 3 12 下载量 198 浏览量
2010-11-05
14:20:02
上传
评论 1
收藏 14.15MB RAR 举报
温馨提示
:下载时如果出现文件下载 安全警告原因在于生成的文件名带有中文需转码 将action中fileName处如下转码(和一般转码不同特别注意顺序) fileName = new String( fileName.getBytes("gbk"),"ISO-8859-1"); 2:此例子是根据返回的Vector填充数据的, 该方法若一个结果集包含的数据过多时会出现溢出异常( the exceptino: java heap space) 若采用返回list集合来填充,需变动2处
资源推荐
资源详情
资源评论
收起资源包目录
java導出excel 經典例子與先關包 (194个子文件)
all-wcprops 3KB
all-wcprops 1KB
all-wcprops 1KB
all-wcprops 587B
all-wcprops 412B
all-wcprops 317B
all-wcprops 264B
all-wcprops 264B
all-wcprops 122B
all-wcprops 115B
all-wcprops 115B
all-wcprops 115B
all-wcprops 107B
all-wcprops 107B
all-wcprops 104B
all-wcprops 103B
all-wcprops 102B
all-wcprops 100B
entries 4KB
entries 1KB
entries 1KB
entries 755B
entries 581B
entries 452B
entries 427B
entries 421B
entries 302B
entries 291B
entries 286B
entries 283B
entries 278B
entries 274B
entries 271B
entries 269B
entries 263B
entries 263B
format 2B
format 2B
format 2B
format 2B
format 2B
format 2B
format 2B
format 2B
format 2B
format 2B
format 2B
format 2B
format 2B
format 2B
format 2B
format 2B
format 2B
format 2B
xercesImpl.jar 1.3MB
poi-3.0.1-FINAL-20070705.jar 888KB
org.mortbay.jetty.jar 660KB
commons-collections-3.2.jar 558KB
mysql-connector-java-5.0.4-bin.jar 484KB
spring-beans.jar 477KB
spring-context.jar 466KB
quartz-1.6.5.jar 437KB
standard.jar 384KB
log4j-1.2.14.jar 359KB
apache-mime4j-0.6.jar 337KB
httpclient-4.0.1.jar 284KB
spring-core.jar 279KB
xml-apis.jar 215KB
spring-web.jar 190KB
httpcore-4.0.1.jar 169KB
2vtools.jar 135KB
commons-dbcp-1.2.2.jar 119KB
commons-pool-1.3.jar 61KB
2vcomms-chart.jar 58KB
commons-logging-1.1.jar 52KB
commons-codec-1.3.jar 46KB
httpmime-4.0.1.jar 25KB
jstl.jar 20KB
BarTimeTool.java 17KB
BarAndLineTool.java 15KB
LunarUtil.java 11KB
LineSimpleTool.java 11KB
GenerateExcel.java 10KB
Bar2DTool.java 10KB
Bar3DTool.java 10KB
Lunar.java 9KB
Lunar.java 9KB
Pie2DTool.java 8KB
Pie3DTool.java 7KB
InfoBean.java 6KB
BarTimeTest.java 5KB
GenerateCodeOfImg.java 4KB
ToExcelTest.java 3KB
BarAndLineTest.java 3KB
LineSimpleTest.java 2KB
Bar2DTest.java 2KB
Bar3DTest.java 2KB
Pie2DTest.java 1KB
Pie3DTest.java 951B
DataBean.java 672B
共 194 条
- 1
- 2
资源评论
p疯子
- 粉丝: 2
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功