综合技术
2009-09-27 15:01
85 查看
http://www.open-open.com/07.htm
JFreeChat的介绍
http://www.javaeye.com/wiki/topic/480183
2008-10-03 15:49
JFreeChart的主页地址为:
http://www.jfree.org/jfreechart/index.html
最新版本为: JFreeChart 1.0.13
在这里可以找到最新版本的JFreeChart的相关信息,如说明文档、下载连接以及示例图表等。
JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求。
1、解决Jfreechat The type org.jfree.util.PublicCloneable cannot be resolved错误
靠了 今天用jfreechat整个报表 NND 老报 The type org.jfree.util.PublicCloneable cannot be resolved. It is indirectly referenced from required .class files。烦躁
整了半天 发现少了个报:
jcommon-1.0.14.jar
在此铭记!
2、乱码问题
设置字体就不会出现乱码问题。
/**
* 配置字体
* @param chart JFreeChart 对象
*/
private void configFont(JFreeChart chart){
// 配置字体
Font xfont = new Font("宋体",Font.PLAIN,12) ;// X轴
Font yfont = new Font("宋体",Font.PLAIN,12) ;// Y轴
Font kfont = new Font("宋体",Font.PLAIN,12) ;// 底部
Font titleFont = new Font("隶书", Font.BOLD , 25) ; // 图片标题
CategoryPlot plot = chart.getCategoryPlot();// 图形的绘制结构对象
// 图片标题
chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont));
// 底部
chart.getLegend().setItemFont(kfont);
// X 轴
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLabelFont(xfont);// 轴标题
domainAxis.setTickLabelFont(xfont);// 轴数值
domainAxis.setTickLabelPaint(Color.BLUE) ; // 字体颜色
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 横轴上的label斜显示
// Y 轴
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setLabelFont(yfont);
rangeAxis.setLabelPaint(Color.BLUE) ; // 字体颜色
rangeAxis.setTickLabelFont(yfont);
}
3、设置不同柱子的颜色
static class CustomRenderer extends BarRenderer {
private Paint colors[];
public Paint getItemPaint(int i, int j) {
return colors[j % colors.length];
}
public CustomRenderer(Paint apaint[]) {
colors = apaint;
}
}
CustomRenderer renderer = new CustomRenderer(new Paint[] { Color.red, Color.blue, Color.green, Color.yellow,
Color.orange, Color.cyan, Color.magenta, Color.blue });
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
4、
public JFreeChart getChart()
{
chart = ChartFactory.createBarChart3D(
"热点讨论投票结果", // 图表标题
"", // 目录轴的显示标签
"", // 数值轴的显示标签
getDataSet(), // 数据集
//PlotOrientation.HORIZONTAL , // 图表方向:水平
PlotOrientation.VERTICAL , // 图表方向:垂直
false, // 是否显示图例(对于简单的柱状图必须是false)
true, // 是否生成工具
true // 是否生成URL链接
);
//重新设置图标标题,改变字体
chart.setTitle(new TextTitle("热点讨论投票结果", new Font("黑体", Font.ITALIC , 18)));
//取得统计图标的第一个图例
//LegendTitle legend = chart.getLegend(0);
//修改图例的字体,必须把显示图例设置为true,否则会报空指针异常
//legend.setItemFont(new Font("宋体", Font.BOLD, 14));
//获得柱状图的Plot对象
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.pink); // 设定图表数据显示部分背景色
//取得横轴
CategoryAxis categoryAxis = plot.getDomainAxis();
//设置横轴显示标签的字体
categoryAxis.setLabelFont(new Font("宋体" , Font.BOLD , 18));
//分类标签以45度角倾斜
//categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
categoryAxis.setTickLabelFont(new Font("宋体" , Font.BOLD , 18));
//取得纵轴
NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();
//设置纵轴显示标签的字体
numberAxis.setLabelFont(new Font("宋体" , Font.BOLD , 18));
//设置最高的一个柱与图片顶端的距离
numberAxis.setUpperMargin(0.1);
//numberAxis.setFixedAutoRange(100);
//设置整数显示
//numberAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
//numberAxis.setNegativeArrowVisible(true);
//取最大数Math.max(supportCount, blackballCount)
numberAxis.setUpperBound(1);
numberAxis.setLowerBound(0.01);
//设置百分比显示
numberAxis.setNumberFormatOverride(new DecimalFormat("0%"));
//numberAxis.setNumberFormatOverride(new DecimalFormat("0.00%"));
//设置最小显示数,小于的话会显示在中间(正负)
//numberAxis.setAutoRangeMinimumSize(1);
plot.setNoDataMessage("没有可供使用的数据!");
plot.setNoDataMessagePaint(Color.blue);
BarRenderer3D renderer = new BarRenderer3D();
//设置柱子宽度
renderer.setMaximumBarWidth(0.1);
//设置柱子高度
renderer.setMinimumBarLength(0.2);
//设置柱子的颜色
renderer.setSeriesPaint(0, new Color(0, 0, 255));
//设置柱子边框可见
//renderer.setDrawBarOutline(true);
//设置柱子默认的边框颜色,必须设置边框可见才起效
//renderer.setBaseOutlinePaint(Color.gray);
//设置分类柱子的边框色,覆盖默认的边框颜色,必须设置边框可见才起效
//renderer.setSeriesOutlinePaint(0,Color.red);
//设置柱子的纵横背景色
//renderer.setWallPaint(Color.gray);
//设置平行柱的之间距离
renderer.setItemMargin(0.5);
//显示每个柱的数值,并修改该数值的字体属性
renderer.setIncludeBaseInRange(true);
//将修改后的属性值保存到图中,这一步很重要,否则上面对颜色的设置都无效
plot.setRenderer(renderer);
//设置柱子的透明度,0.8相当于80%的透明度
plot.setForegroundAlpha(0.8f);
return chart;
}
//返回一个CategoryDataset实例
private static CategoryDataset getDataSet()
{
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
int total = supportCount+blackballCount;
if(total < 1) total = 1;
dataset.addValue((double)supportCount/total, "" , "正方(" + supportCount + ")");
dataset.addValue((double)blackballCount/total, "" , "反方(" + blackballCount + ")");
//dataset.addValue(supportCount, "佛山" , "正方");
//dataset.addValue(blackballCount, "佛山" , "反方");
//dataset.addValue(supportCount , "广州" , "正方");
//dataset.addValue(blackballCount , "广州" , "反方");
return dataset;
}
1:对象属性整理
//设置图表的bar标签值对象
barRenderer3D.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
//设置bar的标签值可见
barRenderer3D.setItemLabelsVisible(this.labelsVisibled);
Renderer对象的相关属性
//设置最大item(bar)值的宽度
barRenderer3D.setMaximumBarWidth(0.03);
//设置最小item(bar)长度
barRenderer3D.setMinimumBarLength(0.01);
//设置每个item(bar)之间的距离
barRenderer3D.setItemMargin(0.1);
//设置item(bar)标签值的位置是在上面还是在bar内
barRenderer3D.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
设置X轴的分类信息之间的距离
CategoryAxis domainCategoryAxis = new CategoryAxis(this.xTitle);
//设置分类信息标题之间的距离
domainCategoryAxis.setCategoryMargin(0.3f);
设置分类标题的字体
domainCategoryAxis.setTickLabelFont(new Font("黑体", Font.BOLD, 10));
设置X轴标题的字体
domainCategoryAxis.setLabelFont(new Font("黑体", Font.BOLD, 10));
//设置分类信息标题相对位置
domainCategoryAxis.
setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(0.2));
domainCategoryAxis.setMaximumCategoryLabelWidthRatio(3F);
设置item(bar)的透明度
plot.setForegroundAlpha(0.85f);
Y轴---数值轴的属性
NumberAxis axis2 = new NumberAxis(this.yRightTitle);
//设置其显示以百分比形式显示数据
if(this.y_right_value_percentForamt){
axis2.setNumberFormatOverride(NumberFormat.getPercentInstance());
}
//设置最大值到顶的距离
axis2.setUpperMargin(0.05);
//设置最小值到底的距离
axis2.setLowerMargin(0.01);
循环设置标志点的标志
for (intMarker = 0; intMarker < arrMakerCategory.length; intMarker++) {
CategoryMarker marker = new CategoryMarker(
arrMakerCategory[intMarker], Color.red,
new BasicStroke(1.0f));
marker.setDrawAsLine(true);
marker.setLabel("异常点");
marker.setLabelFont(new Font("Dialog", Font.PLAIN, 11));
marker.setLabelTextAnchor(TextAnchor.CENTER_RIGHT);
marker.setLabelOffset(new RectangleInsets(2, 5, 2, 5));
vfree.getCategoryPlot().addDomainMarker(marker,
Layer.BACKGROUND);
}
基础设置
// 默认外框背景颜色
vfree.setBackgroundPaint(ChartColor.CreateColor(246, 246, 246));
// 设置字体
vfree.getTitle().setFont(this.titleFont);
vfree.getCategoryPlot().getDomainAxis().setLabelFont(this.xFont);
vfree.getCategoryPlot().getRangeAxis().setLabelFont(this.yFont);
// 设置颜色
vfree.getCategoryPlot().setBackgroundPaint(this.getBackGroundColor());
vfree.getTitle().setPaint(this.titleColor);
vfree.getCategoryPlot().getDomainAxis().setLabelPaint(this.xColor);
vfree.getCategoryPlot().getRangeAxis().setLabelPaint(this.yColor);
设置折线图中线条的颜色和宽度
vfree.getCategoryPlot().getRenderer().setSeriesPaint(0, Color.green);
vfree.getCategoryPlot().getRenderer().setSeriesStroke(0, new BasicStroke(1.0f));
JFreeChat的介绍
http://www.javaeye.com/wiki/topic/480183
2008-10-03 15:49
JFreeChat的介绍 一、简介 JFreeChart(http://www.jfree.org/) 是一个开源的 JAVA 项目,它主要用来开发各种各样的图表,这些图表包括:饼图、柱状图 ( 普通柱状图以及堆栈柱状图 ) 、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。在这些不同式样的图表上可以满足目前商业系统的要求。 JFreeChart 是一种基于 JAVA 语言的图表开发技术。 JFreeChart 可用于 Servlet 、 JSP 、 Applet 、 Java Appication 环境中,通过 JDBC 可动态显示任何数据库数据,结合 Itext 可以输出至 PDF 文件。 二、JFreeChart获取 JFreeChart 是JFreeChart公司在开源网站SourceForge.net上的一个项目,该公司的主要产品有如下: 1.JFreeReport :报表解决工具 2.JFreeChart:Java 图形解决方案(Application/Applet/Servlet/Jsp) 3.JCommon :JFreeReport和JFreeChart的公共类库 4.JFreeDesigner :JFreeReport的报表设计工具 我们可以从jfree官方网站上获取最新版本和相关资料, 获取地址:http://www.jfree.org/ 当前最新版本:jfreechart-1.0.3.zip。 三、JFreeChart配置安装 1 、解压jfreechart-1.0.3.zip.到指定位置,其中source是jfreechart的源码,jfreechart-1.0.3-demo.jar 是例子程序,可以先运行一下看看各种效果。 2 、为了配置成功,我们需要关注的文件有如下三个: 设置classpath。加入下面三个jar包。 jfreechart-1.0.3.jar 、jcommon-1.0.8.jar、gnujaxp.jar 至此jfreechart的配置就完成了 。 四、JFreeChart功能介绍 JFreeChart 目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方面: pie charts (2D and 3D) :饼图(平面和立体) bar charts (regular and stacked, with an optional 3D effect) :柱状图 line and area charts :曲线图 scatter plots and bubble charts time series, high/low/open/close charts and candle stick charts :时序图 combination charts :复合图 Pareto charts Gantt charts :甘特图 wind plots, meter charts and symbol charts wafer map charts ( 态图表,饼图(二维和三维) , 柱状图 ( 水平,垂直),线图,点图,时间变化图,甘特图, 股票行情图,混和图, 温度计图, 刻度图等常用商用图表) 图形可以导出成PNG和JPEG格式,同时还可以与PDF和EXCEL关联 JFreeChart 核心类库介绍: 研究jfreechart源码发现源码的主要由两个大的包组成:org.jfree.chart,org.jfree.data。其中前者主要与图形 本身有关,后者与图形显示的数据有关。具体研究如果大家有兴趣的话可以自己研究。 核心类主要有: org.jfree.chart.JFreeChart :图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象 org.jfree.data.category.XXXDataSet: 数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类 org.jfree.chart.plot.XXXPlot :图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持 org.jfree.chart.axis.XXXAxis :用于处理图表的两个轴:纵轴和横轴 org.jfree.chart.render.XXXRender :负责如何显示一个图表对象 org.jfree.chart.urls.XXXURLGenerator: 用于生成Web图表中每个项目的鼠标点击链接 XXXXXToolTipGenerator: 用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类。 相关地址 http://blog.csdn.net/hqx2008/archive/2007/06/12/1649780.aspx jfreechart,到http://www.jfree.org/下载最新的。 一、在web.xml文件中添加: <servlet> <servlet-name>DisplayChart</servlet-name> <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class> </servlet> <servlet-mapping> <servlet-name>DisplayChart</servlet-name> <url-pattern>/servlet/DisplayChart</url-pattern> </servlet-mapping> 二、解压下载的jfreechar工具包,将解压后的jfreechar下lib目录中的五个文件复制到你的项目的WEB-INF/lib下。 如下载 jfreechart-1.0.0-rc1.zip 三、创建数据库中的表 test 四、JSP源程序: <%@ page contentType="text/html;charset=GBK"%> <%@ page import="java.sql.*" %> <%@ page import="java.io.*" %> <%@ page import="java.awt.*" %> <%@ page import="org.jfree.chart.*" %> <%@ page import="org.jfree.chart.plot.*" %> <%@ page import="org.jfree.chart.servlet.ServletUtilities" %> <%@ page import="org.jfree.chart.entity.StandardEntityCollection" %> <%@ page import="org.jfree.chart.renderer.category.BarRenderer3D" %> <%@ page import="org.jfree.data.category.DefaultCategoryDataset" %> <%@ page import="org.jfree.data.general.DefaultPieDataset" %> <%@ page import="org.jfree.chart.renderer.category.BarRenderer3D" %> <html> <head><title>Jfree图表</title> <meta http-equiv="Content-Type" content="text/html;charset=gb2312"> </head> <body> <div align="cente"><P><font size="4" face="楷体_GB2312"><strong><font color="#0099ff">招生统计信息</font></strong></font>< /p> </div> <% //设置生成饼状图 int i=0; String[] area={"南京市","镇江市","常州市","无锡市","苏州市","南通市"}; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con=DriverManager.getConnection("jdbc:odbc:aaa"); Statement sql=con.createStatement(); ResultSet rs=sql.executeQuery("select * from test"); //按地区进行统计 PrintWriter pw=null; DefaultPieDataset dataset=new DefaultPieDataset(); //设置数据源 while(rs.next()){ String dq=rs.getString("dq"); dataset.setValue(area[i],Integer.parseInt(dq)); //添加数据,参数包括名称和数值 i++; } rs.close(); sql.close(); con.close(); JFreeChart chart=ChartFactory.createPieChart("饼型图",dataset,true,true,true); chart.setTitle("统计图");//设置图片标题 ChartRenderingInfo info=new ChartRenderingInfo(new StandardEntityCollection()); String filename=ServletUtilities.saveChartAsJPEG(chart,300,200,info,session); //设置生成图片,包括图片的大小,长度是300,宽是200 //out.println(filename); session.setAttribute("file_name1",filename); String URL= request.getContextPath() + "/servlet/Displ 4000 ayChart?filename=" + filename; session.setAttribute("file_url1",URL); } catch(SQLException e){ out.println(e); } %> <% //生成柱状图 try{ int j=0; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con=DriverManager.getConnection("jdbc:odbc:aaa"); Statement sql=con.createStatement(); ResultSet rs=sql.executeQuery("select * from test"); DefaultCategoryDataset dataset=new DefaultCategoryDataset();//设置数据源 while(rs.next()){ dataset.addValue(Integer.parseInt(rs.getString("dq")),"学校",area[j]); //添加数据,参数包括名称和数值 j++; } JFreeChart chart1=ChartFactory.createBarChart3D("统计图","招生地区","招生人数", dataset,PlotOrientation.VERTICAL,false,false,false); CategoryPlot plot=chart1.getCategoryPlot(); BarRenderer3D renderer1=new BarRenderer3D(); renderer1.setItemLabelsVisible(true);//显示每个柱子上的数据 renderer1.setItemMargin(0.1);//设置每个柱子之间的距离 plot.setRenderer(renderer1);//让上面对柱子的设置生效 String filename=ServletUtilities.saveChartAsJPEG(chart1,300,200,session); //生成图片,包括图片的大小 session.setAttribute("file_name2",filename); String URL=request.getContextPath()+"/servlet/DisplayChart?filename="+filename; session.setAttribute("file_url2",URL); }catch(SQLException e){} %> <center><img src="<%=session.getAttribute("file_url1")%>" width=300 height=200 border=0 usemap="#<%=session.getAttribute("file_name1") %>"> <img src="<%=session.getAttribute("file_url2") %>" width=300 height=200 border=0 usemap="#<%=session.getAttribute("file_name2")%>"></center> </html> |
jfreechart
JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。JFreeChart的主页地址为:
http://www.jfree.org/jfreechart/index.html
最新版本为: JFreeChart 1.0.13
在这里可以找到最新版本的JFreeChart的相关信息,如说明文档、下载连接以及示例图表等。
JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求。
Jfreechat 日志
被jreeechat虐了,收拾心情,整理一下成果:1、解决Jfreechat The type org.jfree.util.PublicCloneable cannot be resolved错误
靠了 今天用jfreechat整个报表 NND 老报 The type org.jfree.util.PublicCloneable cannot be resolved. It is indirectly referenced from required .class files。烦躁
整了半天 发现少了个报:
jcommon-1.0.14.jar
在此铭记!
2、乱码问题
设置字体就不会出现乱码问题。
/**
* 配置字体
* @param chart JFreeChart 对象
*/
private void configFont(JFreeChart chart){
// 配置字体
Font xfont = new Font("宋体",Font.PLAIN,12) ;// X轴
Font yfont = new Font("宋体",Font.PLAIN,12) ;// Y轴
Font kfont = new Font("宋体",Font.PLAIN,12) ;// 底部
Font titleFont = new Font("隶书", Font.BOLD , 25) ; // 图片标题
CategoryPlot plot = chart.getCategoryPlot();// 图形的绘制结构对象
// 图片标题
chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont));
// 底部
chart.getLegend().setItemFont(kfont);
// X 轴
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLabelFont(xfont);// 轴标题
domainAxis.setTickLabelFont(xfont);// 轴数值
domainAxis.setTickLabelPaint(Color.BLUE) ; // 字体颜色
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 横轴上的label斜显示
// Y 轴
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setLabelFont(yfont);
rangeAxis.setLabelPaint(Color.BLUE) ; // 字体颜色
rangeAxis.setTickLabelFont(yfont);
}
3、设置不同柱子的颜色
static class CustomRenderer extends BarRenderer {
private Paint colors[];
public Paint getItemPaint(int i, int j) {
return colors[j % colors.length];
}
public CustomRenderer(Paint apaint[]) {
colors = apaint;
}
}
CustomRenderer renderer = new CustomRenderer(new Paint[] { Color.red, Color.blue, Color.green, Color.yellow,
Color.orange, Color.cyan, Color.magenta, Color.blue });
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
4、
public JFreeChart getChart()
{
chart = ChartFactory.createBarChart3D(
"热点讨论投票结果", // 图表标题
"", // 目录轴的显示标签
"", // 数值轴的显示标签
getDataSet(), // 数据集
//PlotOrientation.HORIZONTAL , // 图表方向:水平
PlotOrientation.VERTICAL , // 图表方向:垂直
false, // 是否显示图例(对于简单的柱状图必须是false)
true, // 是否生成工具
true // 是否生成URL链接
);
//重新设置图标标题,改变字体
chart.setTitle(new TextTitle("热点讨论投票结果", new Font("黑体", Font.ITALIC , 18)));
//取得统计图标的第一个图例
//LegendTitle legend = chart.getLegend(0);
//修改图例的字体,必须把显示图例设置为true,否则会报空指针异常
//legend.setItemFont(new Font("宋体", Font.BOLD, 14));
//获得柱状图的Plot对象
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.pink); // 设定图表数据显示部分背景色
//取得横轴
CategoryAxis categoryAxis = plot.getDomainAxis();
//设置横轴显示标签的字体
categoryAxis.setLabelFont(new Font("宋体" , Font.BOLD , 18));
//分类标签以45度角倾斜
//categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
categoryAxis.setTickLabelFont(new Font("宋体" , Font.BOLD , 18));
//取得纵轴
NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();
//设置纵轴显示标签的字体
numberAxis.setLabelFont(new Font("宋体" , Font.BOLD , 18));
//设置最高的一个柱与图片顶端的距离
numberAxis.setUpperMargin(0.1);
//numberAxis.setFixedAutoRange(100);
//设置整数显示
//numberAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
//numberAxis.setNegativeArrowVisible(true);
//取最大数Math.max(supportCount, blackballCount)
numberAxis.setUpperBound(1);
numberAxis.setLowerBound(0.01);
//设置百分比显示
numberAxis.setNumberFormatOverride(new DecimalFormat("0%"));
//numberAxis.setNumberFormatOverride(new DecimalFormat("0.00%"));
//设置最小显示数,小于的话会显示在中间(正负)
//numberAxis.setAutoRangeMinimumSize(1);
plot.setNoDataMessage("没有可供使用的数据!");
plot.setNoDataMessagePaint(Color.blue);
BarRenderer3D renderer = new BarRenderer3D();
//设置柱子宽度
renderer.setMaximumBarWidth(0.1);
//设置柱子高度
renderer.setMinimumBarLength(0.2);
//设置柱子的颜色
renderer.setSeriesPaint(0, new Color(0, 0, 255));
//设置柱子边框可见
//renderer.setDrawBarOutline(true);
//设置柱子默认的边框颜色,必须设置边框可见才起效
//renderer.setBaseOutlinePaint(Color.gray);
//设置分类柱子的边框色,覆盖默认的边框颜色,必须设置边框可见才起效
//renderer.setSeriesOutlinePaint(0,Color.red);
//设置柱子的纵横背景色
//renderer.setWallPaint(Color.gray);
//设置平行柱的之间距离
renderer.setItemMargin(0.5);
//显示每个柱的数值,并修改该数值的字体属性
renderer.setIncludeBaseInRange(true);
//将修改后的属性值保存到图中,这一步很重要,否则上面对颜色的设置都无效
plot.setRenderer(renderer);
//设置柱子的透明度,0.8相当于80%的透明度
plot.setForegroundAlpha(0.8f);
return chart;
}
//返回一个CategoryDataset实例
private static CategoryDataset getDataSet()
{
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
int total = supportCount+blackballCount;
if(total < 1) total = 1;
dataset.addValue((double)supportCount/total, "" , "正方(" + supportCount + ")");
dataset.addValue((double)blackballCount/total, "" , "反方(" + blackballCount + ")");
//dataset.addValue(supportCount, "佛山" , "正方");
//dataset.addValue(blackballCount, "佛山" , "反方");
//dataset.addValue(supportCount , "广州" , "正方");
//dataset.addValue(blackballCount , "广州" , "反方");
return dataset;
}
1:对象属性整理
//设置图表的bar标签值对象
barRenderer3D.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
//设置bar的标签值可见
barRenderer3D.setItemLabelsVisible(this.labelsVisibled);
Renderer对象的相关属性
//设置最大item(bar)值的宽度
barRenderer3D.setMaximumBarWidth(0.03);
//设置最小item(bar)长度
barRenderer3D.setMinimumBarLength(0.01);
//设置每个item(bar)之间的距离
barRenderer3D.setItemMargin(0.1);
//设置item(bar)标签值的位置是在上面还是在bar内
barRenderer3D.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
设置X轴的分类信息之间的距离
CategoryAxis domainCategoryAxis = new CategoryAxis(this.xTitle);
//设置分类信息标题之间的距离
domainCategoryAxis.setCategoryMargin(0.3f);
设置分类标题的字体
domainCategoryAxis.setTickLabelFont(new Font("黑体", Font.BOLD, 10));
设置X轴标题的字体
domainCategoryAxis.setLabelFont(new Font("黑体", Font.BOLD, 10));
//设置分类信息标题相对位置
domainCategoryAxis.
setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(0.2));
domainCategoryAxis.setMaximumCategoryLabelWidthRatio(3F);
设置item(bar)的透明度
plot.setForegroundAlpha(0.85f);
Y轴---数值轴的属性
NumberAxis axis2 = new NumberAxis(this.yRightTitle);
//设置其显示以百分比形式显示数据
if(this.y_right_value_percentForamt){
axis2.setNumberFormatOverride(NumberFormat.getPercentInstance());
}
//设置最大值到顶的距离
axis2.setUpperMargin(0.05);
//设置最小值到底的距离
axis2.setLowerMargin(0.01);
循环设置标志点的标志
for (intMarker = 0; intMarker < arrMakerCategory.length; intMarker++) {
CategoryMarker marker = new CategoryMarker(
arrMakerCategory[intMarker], Color.red,
new BasicStroke(1.0f));
marker.setDrawAsLine(true);
marker.setLabel("异常点");
marker.setLabelFont(new Font("Dialog", Font.PLAIN, 11));
marker.setLabelTextAnchor(TextAnchor.CENTER_RIGHT);
marker.setLabelOffset(new RectangleInsets(2, 5, 2, 5));
vfree.getCategoryPlot().addDomainMarker(marker,
Layer.BACKGROUND);
}
基础设置
// 默认外框背景颜色
vfree.setBackgroundPaint(ChartColor.CreateColor(246, 246, 246));
// 设置字体
vfree.getTitle().setFont(this.titleFont);
vfree.getCategoryPlot().getDomainAxis().setLabelFont(this.xFont);
vfree.getCategoryPlot().getRangeAxis().setLabelFont(this.yFont);
// 设置颜色
vfree.getCategoryPlot().setBackgroundPaint(this.getBackGroundColor());
vfree.getTitle().setPaint(this.titleColor);
vfree.getCategoryPlot().getDomainAxis().setLabelPaint(this.xColor);
vfree.getCategoryPlot().getRangeAxis().setLabelPaint(this.yColor);
设置折线图中线条的颜色和宽度
vfree.getCategoryPlot().getRenderer().setSeriesPaint(0, Color.green);
vfree.getCategoryPlot().getRenderer().setSeriesStroke(0, new BasicStroke(1.0f));
相关文章推荐
- WF综合技术演示的例子
- 【CPS】【智能制造】潘再生:智能制造的综合技术体系和中控方案
- OCR识别技术在银行单证综合处理系统中的应用
- MSSQL综合技术补习---常见笔试题1
- 综合布线工作组专项技术白皮书研讨会会议通知
- 热点GIS技术综合分析(转发)
- 综合布线工作组上半年两个技术课题正式进入修改阶段
- 综合布线测试技术的发展趋势
- 移动技术开发综合实验(二)
- 发布个人整理制作的windows综合维护光盘 与技术网友分享
- 2006年网站入侵技术综合总结
- 综合布线工作组2009年再推出两本专业技术白皮书
- 2016OSC源创会年终盛典-综合技术专场-杨晓峰
- 《综合布线系统管理与运行维护技术白皮书》推广活动报导
- 【CCIE技术】WLAN安全技术综合分析详解概述
- 综合布线技术白皮书修改稿讨论会在沪召开
- 综合布线技术基础
- 我记录网站综合系统 -- 技术原理解析[3:我记录框架处理流程]
- 华为初面+综合面试(技术面)
- 综合布线技术部分汇总