<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 11  文章 - 79  trackbacks - 0
    <2010年2月>
    31123456
    78910111213
    14151617181920
    21222324252627
    28123456
    78910111213

    歡迎合作

     

    聯系方式:openhandx@foxmail.com

     

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

     

     

     

     

     

      OpenHandX-Chart 1.0

     

     

     

     

     

     

    2010-2-7

     

    作者:彭明華

    openhandx@foxmail.com

     

    本文檔中的任何部分都不得以任何手段任何形式進行復制與傳播

    目錄

    1            前言

    2            需求

    3            名次解釋

    4            圖表分類

    4.1     兩個維度

    4.1.1       區域圖

    4.1.2       柱狀圖

    4.1.3       折線圖

    4.1.4       餅圖

    4.1.5       折線圖

    4.1.6       雷達圖

    4.2     單維度

    4.2.1       環狀圖

    4.2.2       瀑布圖

    4.3     特殊

    5            使用和開發

    5.1     圖表配置

    5.1.1       兩個維度配置

    5.1.2       單維度配置

    5.1.3       特殊配置

    5.2     圖表實例

    5.3     圖表輸出

    5.4     例子


    1          前言

    OpenHandx-chart核心采用了jfreechart,并集成了jfreechart的主要功能。雖然jfreechart的功能很強大,但使用起來也非常復雜。OpenHandx-chart目的有3個,第一是簡化jfreechart使用、第二是增加圖表工具的數據加工處理功能、第三是為OpenHandx平臺提供圖表處理能力。

    OpenHandx-chart能生成的圖表有AreaChart(區域圖)、BarChart(柱狀圖)、DialChart(儀表圖)、LineChart(折線圖)、PieChart(餅圖)、PolarChart(雷達圖)、RingChart(環狀圖)、ScatterChart(點圖)、WaterfallChart(瀑布圖)。

    2          需求

    OpenHandx-chart 1.0需要:     

    l        Java 5

    l        jfreechart-1.0.13

    l        open-common

    l        commons-beanutils-1.7

    l        commons-logging-1.0.4

    3          名次解釋

    l        交叉表數據:分析型數據庫星型(雪花型)結構的數據

    如數據有3個維度:城市編號、品種編號、月份編號

    2個度量值公斤、總金額

    4列來自事實表的字段城市、品種、單價

    城市編號

    城市

    品種編號

    品種

    單價

    月份編號

    月份

    公斤

    總金額

    1

    北京

    1

    白菜

    1.60

    1

    1

    1,069.00

    1,710.40

    1

    北京

    1

    白菜

    1.60

    2

    2

    891.00

    1,425.60

    1

    北京

    1

    白菜

    1.60

    11

    11

    1,407.00

    2,251.20

    1

    北京

    1

    白菜

    1.60

    12

    12

    674.00

    1,078.40

    1

    北京

    2

    青椒

    4.00

    1

    1

    1,321.00

    5,284.00

    1

    北京

    7

    橙子

    5.00

    8

    8

    1,312.00

    6,560.00

    1

    北京

    7

    橙子

    5.00

    9

    9

    1,012.00

    5,060.00

    1

    北京

    7

    橙子

    5.00

    10

    10

    689.00

    3,445.00

    1

    北京

    7

    橙子

    5.00

    11

    11

    660.00

    3,300.00

    1

    北京

    7

    橙子

    5.00

    12

    12

    599.00

    2,995.00

    2

    石家莊

    1

    白菜

    1.60

    1

    1

    1,124.00

    1,798.40

    2

    石家莊

    1

    白菜

    1.60

    2

    2

    3,447.00

    5,515.20

    2

    石家莊

    1

    白菜

    1.60

    8

    8

    2,901.00

    4,641.60

    2

    石家莊

    2

    青椒

    4.00

    8

    8

    2,145.00

    8,580.00

    2

    石家莊

    2

    青椒

    4.00

    9

    9

    2,538.00

    10,152.00

    2

    石家莊

    2

    青椒

    4.00

    10

    10

    1,346.00

    5,384.00

    2

    石家莊

    2

    青椒

    4.00

    11

    11

    1,543.00

    6,172.00

    2

    石家莊

    2

    青椒

    4.00

    12

    12

    687.00

    2,748.00

    2

    石家莊

    3

    土豆

    2.00

    1

    1

    869.00

    1,738.00

    2

    石家莊

    3

    土豆

    2.00

    2

    2

    1,345.00

    2,690.00

    2

    石家莊

    3

    土豆

    2.00

    3

    3

    1,101.00

    2,202.00

    2

    石家莊

    3

    土豆

    2.00

    4

    4

    2,738.00

    5,476.00

    2

    石家莊

    3

    土豆

    2.00

    5

    5

    2,185.00

    4,370.00

    2

    石家莊

    4

    芹菜

    3.00

    1

    1

    902.00

    2,706.00

    2

    石家莊

    4

    芹菜

    3.00

    2

    2

    1,027.00

    3,081.00

    2

    石家莊

    4

    芹菜

    3.00

    3

    3

    1,444.00

    4,332.00

    2

    石家莊

    4

    芹菜

    3.00

    4

    4

    976.00

    2,928.00

    2

    石家莊

    4

    芹菜

    3.00

    5

    5

    953.00

    2,859.00

     

    l        列表(多維度)數據:關系型數據庫的列表數據

    數據有3個維度:城市編號、品種編號、月份編號

    n個值字段:1月售量、2月售量、3月售量、xxx售量

    4列來自關系表的字段:城市、品種

    城市編號

    城市

    品種編號

    品種

    1月售量

    2月售量

    3月售量量

    xxx售量

    1

    北京

    1

    白菜

    1,069.00

    2,502.00

    1,019.00

    1

    北京

    1

    白菜

    891.00

    2,861.00

    819.00

    1

    北京

    1

    白菜

    1,407.00

    3,162.00

    1,834.00

    1

    北京

    1

    白菜

    674.00

    1,096.00

    533.00

    1

    北京

    2

    青椒

    1,321.00

    1,683.00

    1,926.00

    1

    北京

    7

    橙子

    1,312.00

    3,308.00

    1,227.00

    1

    北京

    7

    橙子

    1,012.00

    962.00

    1,467.00

    1

    北京

    7

    橙子

    689.00

    1,407.00

    1,918.00

    1

    北京

    7

    橙子

    660.00

    674.00

    877.00

    1

    北京

    7

    橙子

    599.00

    1,321.00

    1,097.00

    2

    石家莊

    1

    白菜

    1,124.00

    3,347.00

    1,994.00

    2

    石家莊

    1

    白菜

    3,447.00

    2,772.00

    991.00

    2

    石家莊

    1

    白菜

    2,901.00

    2,346.00

    1,153.00

    2

    石家莊

    2

    青椒

    2,145.00

    3,446.00

    856.00

    2

    石家莊

    2

    青椒

    2,538.00

    3,229.00

    1,089.00

    2

    石家莊

    2

    青椒

    1,346.00

    1,614.00

    953.00

    2

    石家莊

    2

    青椒

    1,543.00

    2,650.00

    1,284.00

    2

    石家莊

    2

    青椒

    687.00

    2,090.00

    1,233.00

    2

    石家莊

    3

    土豆

    869.00

    2,045.00

    1,169.00

    2

    石家莊

    3

    土豆

    1,345.00

    2,290.00

    1,186.00

    2

    石家莊

    3

    土豆

    1,101.00

    2,389.00

    1,435.00

    2

    石家莊

    3

    土豆

    2,738.00

    1,009.00

    1,300.00

    2

    石家莊

    3

    土豆

    2,185.00

    826.00

    773.00

    2

    石家莊

    4

    芹菜

    902.00

    2,381.00

    537.00

    2

    石家莊

    4

    芹菜

    1,027.00

    1,931.00

    803.00

    2

    石家莊

    4

    芹菜

    1,444.00

    904.00

    823.00

    2

    石家莊

    4

    芹菜

    976.00

    1,084.00

    3,350.00

    2

    石家莊

    4

    芹菜

    953.00

    3,209.00

    826.00

    4          圖表分類

    OpenHandx-chart從數據的展現上分為3大類:第一類可以展示兩個維度,支持交叉表數據和列表多列數值的數據,第二類可以展示一個維度的RingChart、WaterfallChart只能展示列表一個維度數據,第三類DialChart(儀表圖)展示特殊數據。

    4.1       兩個維度

    支持此類的圖表有AreaChart(區域圖)、BarChart(柱狀圖)、LineChart(折線圖)、PieChart(餅圖)、PolarChart(雷達圖)、ScatterChart(點圖)。此類的圖都有相同的特點:橫坐標能表示一個維度,不同的分類(顏色)表示能另一個維度。

    4.1.1    區域圖

    4.1.2    柱狀圖

    4.1.3    折線圖

    4.1.4    餅圖

    4.1.5    點圖

    4.1.6    雷達圖

    4.2       單維度

    支持此類的圖表有RingChart(環狀圖)、WaterfallChart(瀑布圖),此類的圖都只能展示一個維度。

    4.2.1    環狀圖

    4.2.2    瀑布圖

    4.3       特殊

    支持此類的圖表有DialChart(儀表圖)。儀表圖里有最小值、最大值分別代表數值的下、上限,另外還有綠色、黃色、紅色分別代表安全、警戒、危險等狀況。指針代表當前值,指針所處的刻度可以看出當前值所處狀態。用此圖表可很好展現庫存、資金、降雨量、水位、溫度報警等。

    5          使用和開發

    OpenHandx-chart開發思路比較簡單,有以下步驟:

    1、構造圖表的配置

    2、創建當前的圖表實例

    3、將圖表輸出到文件或輸出流中

    5.1       圖表配置

    圖表配置的類在open.chart.config下,通過構造方法創建。配置類主要設置圖表的展示數據字段、標題、顏色、字體、是否堆積、是否3D、是否透明、是否縱坐標顯示、是否顯示值、數據加工中除法的精度等。具體設置參考Open-chart的javadoc配置類部分。

    5.1.1    兩個維度配置

    兩個維度的配置有AreaChart(區域圖)、BarChart(柱狀圖)、LineChart(折線圖)、PieChart(餅圖)、PolarChart(雷達圖)、ScatterChart(點圖)。指定需要值字段有3個方法:

    1設定圖表的度量值字段,如果setGroupField為空valueField可以設定多列,否則valueField只能設定一列

    public void setValueField(List<ChartValueField> valueField)

    2、設定圖表的列字段(橫坐標字段)

    public void setListField(ChartCrossField listField)

    3、設定圖表的分組字段(第二個維度字段)

    public void setGroupField(ChartCrossField groupField)

    5.1.2    單維度配置

    單維度的配置有RingChart(環狀圖)、WaterfallChart(瀑布圖),此類的圖都只能展示一個維度。指定需要值字段有2個方法:

    1設定圖表的度量值字段

    publicvoid setValueField(ChartValueField valueField)

    2、設定圖表的維度字段

    public void setListField(ChartCrossField listField)

    5.1.3    特殊配置

    此類表有DialChart(儀表圖)。

    1、指定當前值字段(指針)

    publicvoid setValueField(ChartValueField valueField)

    2、值定最小值字段(最小刻度)

    publicvoid setMinField(ChartValueField minField)

    3、值定最大值字段(最大刻度)

    publicvoid setMaxField(ChartValueField maxField)

    4、值定警告字段(黃色區域)

    publicvoid setWarningField(ChartValueField warningField)

    5、值定嚴重值字段(紅色區域)

    publicvoid setGravenessField(ChartValueField gravenessField)

    5.2       圖表實例

    圖表實例類定義在open.chart.jfreechart,通過構造方法創建。圖表實例處理圖表數據加工和圖表模型的構建,構造方法一般有3個參數,第一參數設置圖表的配置、第二個參數為圖表明細數據、第三個參數為圖表標題數據。

    如:

    public OpenAreaChart(AreaChart config,IRecordSetVO rsvo,RecordVO rvo) throws ModelException

    如果想了解圖表數據加工原理請參考javadoc的open.chart.calculate部分

    IRecordSetVORecordVO的使用參考請參考OpenHandx的另一個開源項目open-common的javadoc

    5.3       圖表輸出

    圖表輸出在open.chart.jfreechart.ChartUtil類里,分別以文件或流的方式輸出,同時提供兩種文件格式JPG和PNG。其中文件方式用于文件歸檔或目標報表,流方式用于不落地的web頁面輸出或寫入其他文件流中。

    5.4       例子

    1、 明細數據

        publicstatic IRecordSetVO getRecordSetVO() throws ModelException{

           IRecordSetVO rsvo = new RecordSetVO();

           rsvo.addField("area", DataType.STRING);

           rsvo.addField("category", DataType.STRING);

           rsvo.addField("number", DataType.INTEGER);

           rsvo.addField("number2", DataType.INTEGER);

          

           RowVO rvo = new RowVO(rsvo);

           rvo.setValue("area", "北京");

           rvo.setValue("category", "蘋果");

           rvo.setValue("number", 672);

           rvo.setValue("number2", 1);

           rsvo.add(rvo);

           . . . . . .

           rvo = new RowVO(rsvo);

           rvo.setValue("area", "深圳");

           rvo.setValue("category", "梨子");

           rvo.setValue("number", 106);

           rvo.setValue("number2", 1);

           rsvo.add(rvo);

           rvo = new RowVO(rsvo);

           rvo.setValue("area", "深圳");

           rvo.setValue("category", "葡萄");

           rvo.setValue("number", 526);

           rvo.setValue("number2", 1);

           rsvo.add(rvo);

          

           return rsvo;

                                                            }

    2、標題數據

        publicstatic RecordVO getRecordVO(){

           RecordVO rvo = new RecordVO();

           rvo.add("title", "CityInfoPort公司組織架構圖");

           rvo.add("valueAxisLabel", "數量");

           rvo.add("categoryAxisLabel", "地區");

           return rvo;

    }

    3、圖表配置

        publicstatic BarChart getConfig(){

           BarChart config = new BarChart();

           ChartLabel label = new ChartLabel("_title_");

           label = new ChartLabel("_valueAxisLabel_");

           label.getFont().setColor(Font.COLOR_RED);

           config.setValueAxisLabel(label);

           label = new ChartLabel("_categoryAxisLabel_");

           config.setGroupAxisLabel(label);

           List<ChartValueField> list = new ArrayList<ChartValueField>();

           list.add(new ChartValueField("number2","number/sum_number"));

           config.setValueField(list);

           config.setListField(new ChartCrossField("area"));

           config.setGroupField(new ChartCrossField("category"));

           return config;

    }

    4、輸出圖表

        publicstaticvoid main(String[] arg) throws IOException, ModelException{

           ChartUtil.saveChartAsPNG("d:/1.png", new OpenBarChart(getConfig(),getRecordSetVO(),getRecordVO()),800,600);

    }



    下載地址:http://code.google.com/p/openhandx2/downloads/list
    posted on 2010-02-09 01:29 彭明華 閱讀(1856) 評論(3)  編輯  收藏 所屬分類: OpenHandX核心

    FeedBack:
    # re: OpenHandX-Chart 1.0[未登錄] 2010-02-09 10:16 paul
    不知道實現雙軸圖是否容易  回復  更多評論
      
    # re: OpenHandX-Chart 1.0 2010-03-12 15:39 小山羊
    在使用barchar時出現以下錯誤:
    Exception in thread "main" java.lang.NoSuchMethodError: org.jfree.chart.title.LegendTitle.setItemPaint(Ljava/awt/Paint;)V
    at open.chart.jfreechart.OpenBarChart.<init>(OpenBarChart.java:169)
    at open.report.excel.chart.BarChartOut.write(BarChartOut.java:41)
    at open.report.excel.crosstab.BarCharSample.main(BarCharSample.java:37)  回復  更多評論
      
    # re: OpenHandX-Chart 1.0 2010-03-17 13:18 彭明華
    @小山羊
    能不能把完整的代碼貼出來  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲欧洲精品成人久久奇米网| 黄色免费在线观看网址| 国产精品区免费视频| 一本色道久久综合亚洲精品高清| 日韩精品免费一线在线观看| 国产福利免费在线观看| 立即播放免费毛片一级| 亚洲精品成人久久久| 久久国产乱子伦精品免费午夜 | 1000部拍拍拍18勿入免费视频软件 | 中文字幕无码免费久久99| 亚洲欧洲国产成人精品| 男女超爽刺激视频免费播放| 久久久久久亚洲精品影院| 看全色黄大色大片免费久久| 人人狠狠综合久久亚洲| 亚洲va中文字幕无码| 成人免费区一区二区三区| 亚洲视频日韩视频| 成熟女人牲交片免费观看视频 | 亚洲一区二区三区在线| 成年女人男人免费视频播放| 国产99久久亚洲综合精品| 久久久久亚洲精品中文字幕| 美女内射无套日韩免费播放 | 国产中文在线亚洲精品官网| 国精产品一区一区三区免费视频| 久久精品国产亚洲av麻豆色欲| 中文字幕无码视频手机免费看| 老湿机一区午夜精品免费福利 | 亚洲最大激情中文字幕| 最好看的中文字幕2019免费| 亚洲精品美女久久7777777| 国产精品亚洲不卡一区二区三区 | av永久免费网站在线观看| 亚洲成无码人在线观看| 亚洲av区一区二区三| 一区二区三区四区免费视频| 亚洲日本在线电影| 亚洲爆乳精品无码一区二区三区| 在免费jizzjizz在线播|