急求教,JFreeChart生成的简单柱状图柱子的宽度的柱子的默认红色怎么改成其他颜色

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(10102)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'JFreechart:简单柱状图(一)',
blogAbstract:'效果:\r\n
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}博客分类:
基本原理很简单,利用jfreechart生成对应图形的图片,然后在页面上显示出来。这种方式相对于flash组件形式最大的优点就是可以在所有平台上都正常显示。
前提:导入需要的2个jar文件,jcommon-版本号.jar,jfreechart-版本号.jar。
listCharts为自己需要显示数据的集合name为列名,count为列值。例如
Map&String, Object& map =
while (rs.next()) {
map = new HashMap&String, Object&();
map.put("name", rs.getString(1));
map.put("count", rs.getString(2));
list.add(map);
///////////////正式代码:
if(chartsType.equals("Column3D")){
DefaultCategoryDataset dataset=new DefaultCategoryDataset();
for (int i = 0; i & listCharts.size(); i++) {
Map&String, Object& rsMap = listCharts.get(i);
String key = (String)rsMap.get("name");
int value = Integer.parseInt((String) rsMap.get("count"));
dataset.setValue(value,key,key);
JFreeChart chart=ChartFactory.createBarChart("hi", "","报警数(条)", dataset, PlotOrientation.VERTICAL, true, true, false); //创建一个JFreeChart
if(alarmType.equals("alarmTypeAll")){
chart.setTitle(new TextTitle("报警类型--报警信息统计图",new Font("宋体",Font.BOLD+Font.ITALIC,20)));//可以重新设置标题,替换“hi”标题
chart.setTitle(new TextTitle(""+alarmType+"--报警信息统计图",new Font("宋体",Font.BOLD+Font.ITALIC,20)));//可以重新设置标题,替换“hi”标题
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis categoryAxis=plot.getDomainAxis();//获得横坐标
categoryAxis.setLabelFont(new Font("微软雅黑",Font.BOLD,12));//设置横坐标字体
plot.setBackgroundPaint(Color.white); // 柱状图的背景
plot.setRangeGridlinesVisible(true); // 横虚线是否可见
plot.setForegroundAlpha(0.65f); // 前北京透明度设置
plot.setRangeGridlinePaint(Color.gray); // 设置横虚线的颜色
//可以控制柱图的位置,但是不能把显示的数据置顶。
LayeredBarRenderer renderer = new LayeredBarRenderer();
//不可以控制柱图的位置,可以把显示的数据置顶。
//BarRenderer renderer = new BarRenderer();
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());//显示每个柱的数值
renderer.setBaseItemLabelsVisible(true);
renderer.setMaximumBarWidth(100); // 设置柱状的宽度
renderer.setBase(0.01);
renderer.setDrawBarOutline(true); // 设置边框是否可见
renderer.setBaseOutlinePaint(Color.blue); // 设置边框的颜色
renderer.setSeriesPaint(0, Color.blue); // 第一种柱状的颜色
renderer.setSeriesPaint(1, Color.orange); // 第二种柱状的颜色
renderer.setSeriesPaint(2, Color.gray); // 第三种柱状的颜色
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
renderer.setItemLabelAnchorOffset(-50.0f);
// 这里设置柱状图 数值
renderer.setItemMargin(0.05D);
// 文字的设置
CategoryAxis domainAxis = plot.getDomainAxis();
//domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
domainAxis.setVisible(true);
plot.setDomainAxis(domainAxis);
ValueAxis rAxis = plot.getRangeAxis();
// 设置标题的文字
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 12));
// 设置X轴坐标上的文字
domainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 10));
// 设置X轴的标题文字
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
// 设置Y轴坐标上的文字
rAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 10));
// 设置Y轴的标题文字
rAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
rAxis.setUpperMargin(0.1);//设置高度,能完全显示数据。
domainAxis.setUpperMargin(0.1);// 左右两边靠边框
domainAxis.setLowerMargin(0.1);
//domainAxis.setCategoryLabelPositionOffset(4);
plot.setNoDataMessage("no data");
plot.setNoDataMessagePaint(Color.blue);
//LayeredBarRenderer lbr = new LayeredBarRenderer();//(BarRenderer)类:
// 给图添加呈现器
renderer.setSeriesBarWidth(1, 0.5);//控制位置
plot.setRenderer(renderer);
int filename =(int)(Math.random()*10000);//产生0-1000的整数随机数
OutputStream os = new FileOutputStream("company.jpeg");//图片是文件格式的,故要用到FileOutputStream用来输出。
ChartUtilities.saveChartAsJPEG(new File("C:\\apache-tomcat-6.0.35\\webapps\\Crt\\jfreepic\\"+filename+".jpeg"), chart, );
//使用一个面向application的工具类,将chart转换成JPEG格式的图片。第3个参数是宽度,第4个参数是高度。
os.close();//关闭输出流
//使用一个面向application的工具类,将chart转换成JPEG格式的图片。第3个参数是宽度,第4个参数是高度。
JSONArray jArray = new JSONArray();
JSONObject jObject = new JSONObject();
jObject.put("fimename",filename);
jArray.add(jObject);
System.out.print(jArray.toString());
out = response.getWriter();
out.write(jArray.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
else if(chartsType.equals("Pie3D")){//扇形图
DefaultPieDataset dpd=new DefaultPieDataset(); //建立一个默认的饼图
for (int i = 0; i & listCharts.size(); i++) {
Map&String, Object& rsMap = listCharts.get(i);
String key = (String)rsMap.get("name");
int value = Integer.parseInt((String) rsMap.get("count"));
dpd.setValue(key,value);
//输入数据
JFreeChart chart =
if(alarmType.equals("alarmTypeAll")){
chart=ChartFactory.createPieChart("报警类型--报警信息统计图",dpd,true,true,false);
chart=ChartFactory.createPieChart(""+alarmType+"--报警信息统计图",dpd,true,true,false);
//chart.setTitle(new TextTitle("报警信息统计图",new Font("微软雅黑",Font.BOLD,12)));
LegendTitle legend=chart.getLegend(0);//设置Legend
legend.setItemFont(new Font("宋体",Font.BOLD,14));
PiePlot plot=(PiePlot) chart.getPlot();//设置Plot
plot.setLabelFont(new Font("隶书",Font.BOLD,16));
plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));
OutputStream os = new FileOutputStream("company.jpeg");//图片是文件格式的,故要用到FileOutputStream用来输出。
int filename =(int)(Math.random()*10000);//产生0-1000的整数随机数
ChartUtilities.saveChartAsJPEG(new File("C:\\apache-tomcat-6.0.35\\webapps\\Crt\\jfreepic\\"+filename+".jpeg"), chart, );
//使用一个面向application的工具类,将chart转换成JPEG格式的图片。第3个参数是宽度,第4个参数是高度。
os.close();//关闭输出流
toknowme 写道现在都用前端框架了,比如Echart,fusionchart你说的Echart这个感觉还是不错的。但是像fusionchart这中基于flash的在越来越多不支持flash的浏览器上就没法用了。fusionchart貌似也是支持js的,之前licence卖的还是蛮贵的,现在这种开源的社会,开源的东西发展很快!
现在都用前端框架了,比如Echart,fusionchart
你说的Echart这个感觉还是不错的。但是像fusionchart这中基于flash的在越来越多不支持flash的浏览器上就没法用了。
浏览: 7739 次
来自: 北京
苏小驰 写道toknowme 写道现在都用前端框架了,比如Ec ...
toknowme 写道现在都用前端框架了,比如Echart,f ...
现在都用前端框架了,比如Echart,fusionchart
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'你的柱状图(JFreeChart)为什么每根柱子的颜色都不一样,怎么做到的????_百度知道
你的柱状图(JFreeChart)为什么每根柱子的颜色都不一样,怎么做到的????
我有更好的答案
默认就可以了。。你也可以一个一个设置。。BarRenderer3D renderer = new BarRenderer3D();// 3D属性修改// 设置没个柱子的颜色,0代表第一个柱子,依次往右 renderer.setSeriesPaint(0, Color.blue); renderer.setSeriesPaint(1, Color.blue); renderer.setSeriesPaint(2, Color.blue); renderer.setSeriesPaint(3, Color.blue); renderer.setSeriesPaint(4, Color.blue);.............
我的柱状图是同一类型的数据,如水果(包括苹果、桃子、香蕉)。但上面的方法应该是针对不同类型的数据的吧。我试过,仍然没用啊。可否给我看看你的完整代码??????
代码有点长。。发不过去,我发你QQ邮箱吧。。。给我个邮箱地址。。
不好意思,前几天没上网,没看到。我的QQ邮箱是。给我发一下,谢谢。
来自:求助得到的回答
采纳率:25%
默认就可以了。。你也可以一个一个设置。。BarRenderer3D renderer = new BarRenderer3D();// 3D属性修改// 设置没个柱子的颜色,0代表第一个柱子,依次往右 renderer.setSeriesPaint(0, Color.blue); renderer.setSeriesPaint(1, Color.blue); renderer.setSeriesPaint(2, Color.blue); renderer.setSeriesPaint(3, Color.blue); renderer.setSeriesPaint(4, Color.blue);装修问题就去 装饰e站通
我试了,不对啊。我的数据是这样加的。String s=&热销商品&;DefaultCategoryDataset defaultcategorydataset=new DefaultCategoryDataset();defaultcategorydataset.addValue(100,s,苹果); defaultcategorydataset.addValue(120,s,葡萄);defaultcategorydataset.addValue(150,s,香蕉); defaultcategorydataset.addValue(90,s,桃子); 请问你的数据是怎么加的,求你的代码??????????
为您推荐:
其他类似问题
jfreechart的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。[ExtJs]柱状图,改变每条柱子的颜色
ExtJs的柱状图的画法其实与《【ExtJs】折线图》(点击打开链接)的画法几乎完全一样,难点在于各个柱子的颜色。ExtJs对于柱状图的颜色,并没有单独为其开放独立的参数。因此还是与《【ExtJs】表格控件Grid的增删改查,利用renderer让操作列actioncolumn使用文字而不是图标》(点击打开链接)一样,要自己单独设置东西,必须使用到渲染器。如果不设置,它画出来的柱状图,每次都是同样的颜色。
网上对于这部分东西的说明,仅有极少部分的资料。而且把代码写得天花龙凤,根本读不懂。下面使用一个极其简单的例子说明这个问题。
一、基本目标
绘制如下的柱状图,同时每条柱子不同颜色。
二、制作过程
首先还是与《【ExtJs】折线图》(点击打开链接)一样,定义一个模型,在此模型上建立数据中心store,数据中心的数据可以自己写,也可以从后端页面获取。
Ext.define('graphData',{
extend:'Ext.data.Model',
{name:'graphName',type:'string'},
{name:'graphData',type:'int'}
var graphDataStore=Ext.create('Ext.data.Store',{
model:'graphData',
{graphName:A,graphData:700},
{graphName:B,graphData:800},
{graphName:C,graphData:600},
{graphName:D,graphData:500}
之后先定义一个颜色数组,为下面的渲染色做好准备。
var colors = ['#6E548D','#94AE0A','#FF7348','#3D96AE'];
最后,则绘制这个柱状图,渲染器放在series的属性项中:
var chart1 = new Ext.chart.Chart({
width: 480,
height: 320,
animate: true,//使用动画
store: graphDataStore,
renderTo: Ext.getBody(),
shadow: true,//使用阴影
axes: [{//x轴与y轴的声明
type: 'Numeric',
position: 'left',
grid: true
type: 'Category',
position: 'bottom',
fields: 'graphName'
series: [{
type: 'column',
axis: 'bottom',
xField: 'graphName',
yField: 'graphData',//x与y轴的数据声明
//此渲染器的存在能够使每条柱子的颜色,与上方声明的颜色数组相同
renderer: function(sprite, storeItem, barAttr, i, store) {
barAttr.fill = colors[i];
return barA
&script type=text/javascript src=../js/ext-all.js&&/script&&script type=text/javascript src=../js/bootstrap.js&&/script&&script type=text/javascript src=../js/ext-lang-zh_CN.js&&/script&jfreechart柱状图每个柱子颜色要求不一致的问题!全部是同一系列!
[问题点数:88分,结帖人dsgdsg]
jfreechart柱状图每个柱子颜色要求不一致的问题!全部是同一系列!
[问题点数:88分,结帖人dsgdsg]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|

我要回帖

更多关于 柱状图两个柱子重叠 的文章

 

随机推荐