工作中最近需要用到jfreechart 做图表,在开发柱形图时,发现了一个比较诡异的问题,思考好久,没有解决好,废话不多说了,先描述一下。模拟数据如下:
dataset.addValue(1,"A",A);
dataset.addValue(1,"BV",B);
dataset.addValue(1,"C1",C);
dataset.addValue(1,"C2",C);
dataset.addValue(1,"C3",C);
dataset.addValue(1,"D",D);
希望实现的是A,B,D,三组各一条数据,宽度都只有一根柱宽, C组有三根柱子,都居中显示。
1+1+1+3 共六根柱子加间距的宽度。
可实际上 …6*4  相当于24根柱子的宽度,
废话一大堆,不知道大家有没有听明白,
具体如下图。

解决方案 »

  1.   

    lz是想调整 柱子之间的间距吧,先理解 addValue(a,b,c);这里面的参数的含义吧。
    a 我记得是 高度吧
    b 柱子的区别 就是可以设置柱子的颜色 ,是不是同一类的柱子
    c 柱子的下标吧
      

  2.   

    客户要求使用JfreeChart吗,可以建议试试funshionChart和HighChart 都简单实用、效果好。
      

  3.   

    这个以前做过,主要是BarRenderer内部会根据dataset的组的数量以及组内柱图的数量进行计算的,这个计算方式不是智能的根据组内柱图的数量调整剧中而是,根据组中哪个rowCount最多就以他为准。这个必要的时候你要改动他计算柱图间距的源码。
      

  4.   

    用fusionchart 比jfreechart好用多了  直接组装数据 就好了