`
编程足球
  • 浏览: 250681 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

报表 charts4j

阅读更多
1. 简介
charts4j is a Java chart library that enables developers to programmatically generate nearly all 1 the charts available in the Google Chart API . charts4j can be incorporated into any Internet enabled Java (e.g. Swing) or web application environment (e.g. JSPs / Servlets, Spring MVC, GWT, etc.)

Installation

Developers only need to include the charts4j.jar in their classpath. It is available in the charts4j.zip file. The application must also be connected to the Internet because the charts are ultimately rendered by the Google Chart API server
(上面copy于charts4j 1.3API)

Features
Supports many features of the Google Chart Tools
Hides the ugly details of creating the URL parameters that are necessary for communicating with the Google Chart Tools
Can be incorporated into any Internet enabled Swing or web application environment (JSP/Servlet, GWT, Spring MVC, etc.)
100% pure core Java solution. No need for special graphics libraries, etc.
Super-scalable & Lightweight. Only one 160Kb jar and an Internet connection required
Well documented
GWT client-side support.
JFreeChart Eastwood Servlet integration.
Works on Android
Best of all, it is FREE!
(上面来至官网).
http://code.google.com/p/charts4j/

[color=red]1. 例子(都在官网中下载的jar包中有这些example)[/color
1. LineChart
/**
 * The MIT License
 * Copyright (c) 2011 the original author or authors.
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
package com.jspsmart.charts4j;
import static com.googlecode.charts4j.Color.*;
import java.util.Arrays;
import org.junit.Test;
import com.googlecode.charts4j.AxisLabels;
import com.googlecode.charts4j.AxisLabelsFactory;
import com.googlecode.charts4j.AxisStyle;
import com.googlecode.charts4j.AxisTextAlignment;
import com.googlecode.charts4j.Color;
import com.googlecode.charts4j.Data;
import com.googlecode.charts4j.DataUtil;
import com.googlecode.charts4j.Fills;
import com.googlecode.charts4j.GCharts;
import com.googlecode.charts4j.Line;
import com.googlecode.charts4j.LineChart;
import com.googlecode.charts4j.LineStyle;
import com.googlecode.charts4j.LinearGradientFill;
import com.googlecode.charts4j.Plots;
import com.googlecode.charts4j.Shape;

/**
 *
 * @author Julien Chastang (julien.c.chastang at gmail dot com)
 */
public class LineChartExample {
    @Test
    public void example1() {
        // Defining lines
        final int NUM_POINTS = 25; // 定义点的个数
        final double[] competition = new double[NUM_POINTS];
        final double[] mywebsite = new double[NUM_POINTS];
        for (int i = 0; i < NUM_POINTS; i++) {
            competition[i] = 100-(Math.cos(30*i*Math.PI/180)*10 + 50)*i/20;
            mywebsite[i] = (Math.cos(30*i*Math.PI/180)*10 + 50)*i/20;
        }
        
//        public static Line newLine(Data data,Color color,String legend)
//        data - Data for this line. Cannot be null.   	数据源
//        color - Line color. Cannot be null.			标题盘指定的颜色颜色
//        legend - Legend for this line. Cannot be null.标题
        Color line1Color = Color.YELLOW;
        Line line1 = Plots.newLine(Data.newData(mywebsite), line1Color, "Line1 MARK");
        
//        第一个参数 lineThickness - Thickness of line. Must be > 0. 线条厚度
//        第二个参数 lengthOfLineSegment - Length of line segment. Must be >= 0. 每个线条长度
//        第三个参数 lengthOfBlankSegment - Length of blank segment. Must be >= 0.  线条间隙
        line1.setLineStyle(LineStyle.newLineStyle(2, 1, 1));
        
//        shape - Arrows, Diamonds, etc. Cannot be null.  形状
//        color - Color of the shape maker. Cannot be null. 颜色
//        size - The size of the shape marker. Must be > 0. 大小
        line1.addShapeMarkers(Shape.DIAMOND, Color.WHITE, 4);
        line1.addShapeMarkers(Shape.DIAMOND, line1Color, 8);
        
        Color line2Color = Color.SKYBLUE;
        Line line2 = Plots.newLine(Data.newData(competition), line2Color, "Line2 MARK");
        line2.setLineStyle(LineStyle.newLineStyle(3, 1, 0));
        line2.addShapeMarkers(Shape.DIAMOND, BLACK, 5);
        line2.addShapeMarkers(Shape.CIRCLE, line2Color, 10);


        // Defining chart.
        LineChart chart = GCharts.newLineChart(line1, line2);
        
//        地​​图以外的所有图表的可能最大面积是30万像素。
//        width - chart width. Must be > 0 and <= 1000.  长
//        height - chart height. Must be > 0 and <= 1000. 高
        chart.setSize(600, 500);
        
//        title - Chart title. Cannot be null.			标题
//        color - Chart title color. Cannot be null.	颜色
//        fontSize - Chart title font size. Must be > 0.大小
        chart.setTitle("Web Traffic|(in billions of hits)", WHITE, 14);
        
//        水平范围标记   
//        startPoint - the position on the y-axis at which the range starts where 0 is the bottom and 100 is the top.
//        endPoint - the position on the y-axis at which the range ends where 0 is the bottom and 100 is the top.
//        color - color of range marker. Cannot be null.
        chart.addHorizontalRangeMarker(40, 60, Color.newColor(RED, 30));
        chart.addVerticalRangeMarker(70, 90, Color.newColor(GREEN, 30));
        
//      xAxisStepSize - x step size. must be > 0.  x轴之间的间隙长度(百分比)
//      yAxisStepSize - y step size. must be > 0.	 y轴每条线之间的间隙长度	(百分比)
//      lengthOfLineSegment - length of line segment. must be >= 0.  每条黑线的长度
//      lengthOfBlankSegment - length of blank segment. must be >= 0. 每条线之间的间隔
        chart.setGrid(30, 10, 3, 2);

        // Defining axis info and styles  Axis 轴
        
//        textColor - color of text displayed along the axis. Cannot be null.	文本颜色
//        fontSize - font size of text displayed along the axis. Must be > 0.	文本大小
//        alignment - alignment of text along the axis with respect to the axis tick marks. Only works for horizontal axes. Cannot be null. 对齐方式
        AxisStyle axisStyle = AxisStyle.newAxisStyle(WHITE, 12, AxisTextAlignment.CENTER);
        
//        Labels that will be displayed along side the axis.	x轴显示标签
        AxisLabels xAxis = AxisLabelsFactory.newAxisLabels("Nov", "Dec", "Jan", "Feb", "Mar");
        xAxis.setAxisStyle(axisStyle);  // 添加标签样式
        
        AxisLabels xAxis2 = AxisLabelsFactory.newAxisLabels("2007", "2008", "2009", "2010", "2011");
        xAxis2.setAxisStyle(axisStyle);
        
        AxisLabels xAxis3 = AxisLabelsFactory.newAxisLabels("Month", 50.0);
        xAxis3.setAxisStyle(AxisStyle.newAxisStyle(Color.BLUE, 14, AxisTextAlignment.CENTER));

        AxisLabels yAxis = AxisLabelsFactory.newAxisLabels("0", "25", "50", "75", "100");
        yAxis.setAxisStyle(axisStyle);

        AxisLabels yAxis2 = AxisLabelsFactory.newAxisLabels("Hits", 50.0);
        yAxis2.setAxisStyle(AxisStyle.newAxisStyle(Color.RED, 14, AxisTextAlignment.CENTER));
        yAxis2.setAxisStyle(axisStyle);

        // Adding axis info to chart.
        chart.addXAxisLabels(xAxis);
        chart.addXAxisLabels(xAxis2);
        chart.addXAxisLabels(xAxis3);
        chart.addYAxisLabels(yAxis);
        chart.addYAxisLabels(yAxis2);

        // Defining background and chart fills. 背景颜色
        chart.setBackgroundFill(Fills.newSolidFill(Color.newColor("1F1D1D")));
        
        // 数据域颜色
        LinearGradientFill fill = Fills.newLinearGradientFill(0, Color.newColor("363433"), 100);
        fill.addColorAndOffset(Color.BLUE, 0);
        chart.setAreaFill(fill);
        String url = chart.toURLString();
     
        // EXAMPLE CODE END. Use this url string in your web or
        System.out.println(url);
    }

    @Test
    public void example2() {
        // EXAMPLE CODE START
        // Defining Line
        final double[] sp500 = { 62.960, 74.560, 84.300, 92.200, 95.890, 
        							103.800, 91.600, 92.270, 96.870, 116.930, 
        							97.540, 67.160, 89.770, 106.880, 94.750, 
        							96.280, 107.840, 135.330, 122.300, 140.340, 
        							164.860, 166.260, 210.680, 243.370,247.840, 
        							277.080, 350.680, 328.710, 415.140, 438.820, 
        							468.660, 460.920, 614.120, 753.850, 970.840, 
        							1231.93, 1464.47, 1334.22, 1161.02, 879.390, 
        							1109.64, 1213.55, 1258.17, 1424.71, 1475.25 };
        
        final double INFLATION = 0.035;
        final double[] inflation = new double[sp500.length];
        inflation[0] = sp500[0];
        for (int i = 1; i < inflation.length; i++) {
            inflation[i] = inflation[i-1] *INFLATION + inflation[i-1];
        }

//         Line line1 = Plots.newLine(Data.newData(sp500), YELLOW, "S & P 500");
        Line line1 = Plots.newLine(DataUtil.scaleWithinRange(0,1500,sp500), YELLOW, "S & P 500");
        line1.setLineStyle(LineStyle.newLineStyle(3, 1, 0));
        line1.addShapeMarkers(Shape.CIRCLE, YELLOW, 10);
        line1.addShapeMarkers(Shape.CIRCLE, BLACK, 7);
        line1.addShapeMarker(Shape.VERTICAL_LINE_PARTIAL, BLUE,3,8);
        line1.addShapeMarker(Shape.HORIZONTAL_LINE, BLUE,3,17);
        line1.addShapeMarker(Shape.VERTICAL_LINE_FULL, BLUE,3,24);
        line1.addShapeMarker(Shape.VERTICAL_LINE_PARTIAL, BLUE,3,40);
        
        line1.setFillAreaColor(LIGHTYELLOW);

        Line line2 = Plots.newLine(DataUtil.scaleWithinRange(0,1500,inflation), LIMEGREEN, "Inflation");
        line2.setLineStyle(LineStyle.newLineStyle(3, 1, 0));
        
        //	可以使用addShapeMarkers进行多层迭代 一个点可以有多种形状和颜色叠加
        line2.addShapeMarkers(Shape.CIRCLE, Color.RED, 10);
        line2.addShapeMarkers(Shape.CIRCLE, Color.BLACK, 7);
        line2.addShapeMarkers(Shape.CIRCLE, Color.YELLOW, 4);
        line2.setFillAreaColor(LIGHTGREEN);


        // Defining chart.
        LineChart chart = GCharts.newLineChart(line1,line2);
        chart.setSize(600, 450);
        chart.setTitle("S & P 500|1962 - 2008", WHITE, 14);

        // Defining axis info and styles
        AxisStyle axisStyle = AxisStyle.newAxisStyle(WHITE, 12, AxisTextAlignment.CENTER);
        AxisLabels yAxis = AxisLabelsFactory.newNumericRangeAxisLabels(0, sp500[sp500.length-1]);
        yAxis.setAxisStyle(axisStyle);
        AxisLabels xAxis1 = AxisLabelsFactory.newAxisLabels(Arrays.asList("Fed Chiefs:","Burns","Volcker","Greenspan","Bernanke"), Arrays.asList(5,18,39,55,92));
        xAxis1.setAxisStyle(axisStyle);
        AxisLabels xAxis2 = AxisLabelsFactory.newNumericRangeAxisLabels(1962, 2008);
        xAxis2.setAxisStyle(axisStyle);
        AxisLabels xAxis3 = AxisLabelsFactory.newAxisLabels("Year", 50.0);
        xAxis3.setAxisStyle(AxisStyle.newAxisStyle(WHITE, 14, AxisTextAlignment.CENTER));

        // Adding axis info to chart.
        chart.addYAxisLabels(yAxis);
        chart.addXAxisLabels(xAxis1);
        chart.addXAxisLabels(xAxis2);
        chart.addXAxisLabels(xAxis3);
        chart.setGrid(100, 6.78, 5, 0);

        // Defining background and chart fills.
        chart.setBackgroundFill(Fills.newSolidFill(BLACK));
        chart.setAreaFill(Fills.newSolidFill(Color.newColor("708090")));
        String url = chart.toURLString();
        
        // EXAMPLE CODE END. Use this url string in your web or Internet application.
        System.out.println(url);
    }

}

根据上面生成的url
example1 的效果图如下

http://chart.apis.google.com/chart?cht=lc&chs=600x500&chts=FFFFFF,14&chxt=y,y,x,x,x&chls=2,1,1|3,1,0&chg=30.0,10.0,3,2&chco=FFFF00,87CEEB&chxp=1,50.0|4,50.0&chdl=Line1+MARK|Line2+MARK&chxr=1,0.0,100.0|4,0.0,100.0&chtt=Web+Traffic%7C%28in+billions+of+hits%29&chf=bg,s,1F1D1D|c,lg,0,363433,1.0,0000FF,0.0&chxs=0,FFFFFF,12,0|1,FFFFFF,12,0|2,FFFFFF,12,0|3,FFFFFF,12,0|4,0000FF,14,0&chxl=0:|0|25|50|75|100|1:|Hits|2:|Nov|Dec|Jan|Feb|Mar|3:|2007|2008|2009|2010|2011|4:|Month&chd=e:AAB4DhEzFxGnHrJRLhOZRmUpXCYZYpYAXCWfXCZIczhmmtrKuE,..-H8e7M6O5Y4U2u0exmuZrWo9nmnWn.o9pgo9m3jMeZZSU1R7&chm=r,FF00004C,0,0.40,0.60|R,0080004C,0,0.70,0.90|d,FFFFFF,0,-1,4,0|d,FFFF00,0,-1,8,0|d,000000,1,-1,5,0|o,87CEEB,1,-1,10,0


example2 的效果图如下
http://chart.apis.google.com/chart?cht=lc&chs=600x450&chxt=y,x,x,x&chts=FFFFFF,14&chls=3,1,0|3,1,0&chco=FFFF00,32CD32&chg=100.0,6.78,5,0&chdl=S+%26+P+500|Inflation&chf=bg,s,000000|c,s,708090&chxp=1,5,18,39,55,92|3,50.0&chtt=S+%26+P+500%7C1962+-+2008&chxr=0,0.0,1475.25|1,0.0,100.0|2,1962.0,2008.0|3,0.0,100.0&chxs=0,FFFFFF,12,0|1,FFFFFF,12,0|2,FFFFFF,12,0|3,FFFFFF,14,0&chxl=1:|Fed+Chiefs%3A|Burns|Volcker|Greenspan|Bernanke|3:|Year&chd=e:CsDMDmD8EGEbD6D8EIE.EKC3D1EkEDEHEmFxFOF.HCHGI.KYKlL0O9OBRtSuT.TqaNgKpa0j-e46xilhvVzx1r8x-7,CsCyC4C.DFDMDTDbDiDqDyD7EEENEWEgEqE0E.FKFWFiFuF7GIGWGkGzHCHSHiHzIFIXIqI9JRJmJ7KSKpLALZLzMN&chm=o,FFFF00,0,-1,10,0|o,000000,0,-1,7,0|v,0000FF,0,8,3,0|h,0000FF,0,17,3,0|V,0000FF,0,24,3,0|v,0000FF,0,40,3,0|B,FFFFE0,0,0,0|o,FF0000,1,-1,10,0|o,000000,1,-1,7,0|o,FFFF00,1,-1,4,0|B,90EE90,1,0,0

2.BarChart


/**
 *
 * The MIT License
 *
 * Copyright (c) 2011 the original author or authors.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:

 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.

 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

package com.jspsmart.charts4j;
import static com.googlecode.charts4j.Color.*;
import static com.googlecode.charts4j.UrlUtil.normalize;
import java.util.Arrays;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.junit.BeforeClass;
import org.junit.Test;

import com.googlecode.charts4j.AxisLabels;
import com.googlecode.charts4j.AxisLabelsFactory;
import com.googlecode.charts4j.AxisStyle;
import com.googlecode.charts4j.AxisTextAlignment;
import com.googlecode.charts4j.BarChart;
import com.googlecode.charts4j.BarChartPlot;
import com.googlecode.charts4j.Color;
import com.googlecode.charts4j.Data;
import com.googlecode.charts4j.DataUtil;
import com.googlecode.charts4j.Fills;
import com.googlecode.charts4j.GCharts;
import com.googlecode.charts4j.LinearGradientFill;
import com.googlecode.charts4j.Plots;

/**
 *
 * @author Julien Chastang (julien.c.chastang at gmail dot com)
 */
public class BarChartExample {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).setLevel(Level.ALL);
    }

    @Test
    public void example1() {
        // EXAMPLE CODE START
        // Defining data plots.
        BarChartPlot team1 = Plots.newBarChartPlot(Data.newData(25, 43, 12, 30), BLUEVIOLET, "Team A");
        BarChartPlot team2 = Plots.newBarChartPlot(Data.newData(8, 35, 11, 5), ORANGERED, "Team B");
        BarChartPlot team3 = Plots.newBarChartPlot(Data.newData(10, 20, 30, 30), LIMEGREEN, "Team C");

        // Instantiating chart.
        BarChart chart = GCharts.newBarChart(team1, team2, team3);

        // Defining axis info and styles
        AxisStyle axisStyle = AxisStyle.newAxisStyle(Color.RED, 13, AxisTextAlignment.CENTER);
        AxisLabels score = AxisLabelsFactory.newAxisLabels("Score", 50.0);
        score.setAxisStyle(axisStyle);
        AxisLabels year = AxisLabelsFactory.newAxisLabels("Year", 50.0);
        year.setAxisStyle(axisStyle);

        // Adding axis info to chart.  添加坐标轴信息
        chart.addXAxisLabels(AxisLabelsFactory.newAxisLabels("2002", "2003", "2004", "2005"));
        chart.addYAxisLabels(AxisLabelsFactory.newNumericRangeAxisLabels(0, 200,20));
        chart.addYAxisLabels(score);
        chart.addXAxisLabels(year);

        chart.setSize(600, 450);
        
//        Set the bar chart width.每条的宽度
        chart.setBarWidth(50);
        
//        Set the space within groups of bars.空格间隙
        chart.setSpaceWithinGroupsOfBars(20);
        
//        Are the bar charts stacked, or side-by-side.  叠加 还是在旁边
        chart.setDataStacked(true);
        
        chart.setTitle("Team Scores", BLACK, 20);
        
//        xAxisStepSize - x step size. must be > 0.  x轴之间的间隙长度
//        yAxisStepSize - y step size. must be > 0.	 y轴每条线之间的间隙长度	
//        lengthOfLineSegment - length of line segment. must be >= 0.  每条黑线的长度
//        lengthOfBlankSegment - length of blank segment. must be >= 0. 每条线之间的间隔
        chart.setGrid(10, 20, 3, 2);
        chart.setBackgroundFill(Fills.newSolidFill(ALICEBLUE));
        LinearGradientFill fill = Fills.newLinearGradientFill(0, LAVENDER, 100);
        fill.addColorAndOffset(WHITE, 0);
        chart.setAreaFill(fill);
        String url = chart.toURLString();
        // EXAMPLE CODE END. Use this url string in your web or Internet application.
	        System.out.println(url);
    }

    @Test
    public void example2() {
        // EXAMPLE CODE START
        // Defining data series.
        final int MAX_MEDALS = 51;	// 最大值
        
//        min - The minimum value in the scaling range.
//        max - The maximum value in the scaling range.
//        data - The data
        Data goldData= DataUtil.scaleWithinRange(0, MAX_MEDALS, Arrays.asList(MAX_MEDALS, 36, 23, 19, 16));
        Data silverData= DataUtil.scaleWithinRange(0, MAX_MEDALS, Arrays.asList(21, 38, 21, 13, 10));
        Data bronzeData= DataUtil.scaleWithinRange(0, MAX_MEDALS, Arrays.asList(28, 36, 28, 15, 15));
        
        BarChartPlot gold = Plots.newBarChartPlot(goldData, GOLD, "First LGF");
        BarChartPlot silver = Plots.newBarChartPlot(silverData, SILVER, "Second HQY");
        BarChartPlot bronze = Plots.newBarChartPlot(bronzeData, Color.BLACK, "Three CD");
        
        // 定义表格
        BarChart chart = GCharts.newBarChart(gold, silver,  bronze);

        // Defining axis info and styles  定义坐标数据和表格
        AxisStyle axisStyle = AxisStyle.newAxisStyle(BLACK, 13, AxisTextAlignment.CENTER);
       
        AxisLabels country = AxisLabelsFactory.newAxisLabels("Country", 50.0);
        country.setAxisStyle(axisStyle);
        
        AxisLabels countries = AxisLabelsFactory.newAxisLabels("Germany", "United Kingdom", "Russia", "USA", "China");
        countries.setAxisStyle(axisStyle);
        
        AxisLabels medals = AxisLabelsFactory.newAxisLabels("Medals", 50.0);
        medals.setAxisStyle(axisStyle);
        
        AxisLabels medalCount = AxisLabelsFactory.newNumericRangeAxisLabels(0, MAX_MEDALS,5);
        medalCount.setAxisStyle(axisStyle);


        // Adding axis info to chart.
        chart.addXAxisLabels(medalCount);
        chart.addXAxisLabels(medals);
        chart.addYAxisLabels(countries);
        chart.addYAxisLabels(country);
        chart.addTopAxisLabels(medalCount);
        
        chart.setHorizontal(true);
        chart.setSize(450, 650);
        chart.setSpaceBetweenGroupsOfBars(30);

        chart.setTitle("2008 Beijing Olympics Medal Count", BLACK, 16);
        
        ///51 is the max number of medals.
        chart.setGrid((50.0/MAX_MEDALS)*20, 600, 3, 2);
        chart.setBackgroundFill(Fills.newSolidFill(LIGHTGREY));
        LinearGradientFill fill = Fills.newLinearGradientFill(0, Color.newColor("E37600"), 100);
        fill.addColorAndOffset(Color.newColor("DC4800"), 0);
        chart.setAreaFill(fill);
        String url = chart.toURLString();
        // EXAMPLE CODE END. Use this url string in your web or  Internet application.
        System.out.println(normalize(url));
    }
}

example1生成的url
http://chart.apis.google.com/chart?cht=bvs&chs=600x450&chxt=y,y,x,x&chbh=50,20,8&chts=000000,20&chtt=Team+Scores&chg=10.0,20.0,3,2&chxp=1,50.0|3,50.0&chco=8A2BE2,FF4500,32CD32&chdl=Team+A|Team+B|Team+C&chd=e:QAbhHrTN,FIWZHCDN,GaMzTNTN&chxs=1,FF0000,13,0|3,FF0000,13,0&chf=bg,s,F0F8FF|c,lg,0,E6E6FA,1.0,FFFFFF,0.0&chxl=1:|Score|2:|2002|2003|2004|2005|3:|Year&chxr=0,0.0,200.0,20.0|1,0.0,100.0|3,0.0,100.0

example2 生成的url
http://chart.apis.google.com/chart?chbh=23,4,30&chco=FFD700,C0C0C0,000000&chd=e:..tLc3X2UF,aWvraWQUMj,jItLjIS0S0&chdl=First+LGF|Second+HQY|Three+CD&chf=bg,s,D3D3D3|c,lg,0,E37600,1.0,DC4800,0.0&chg=19.6078431372549,600.0,3,2&chs=450x650&cht=bhg&chts=000000,16&chtt=2008+Beijing+Olympics+Medal+Count&chxl=0:|Germany|United+Kingdom|Russia|USA|China|1:|Country|4:|Medals&chxp=1,50.0|4,50.0&chxr=1,0.0,100.0|2,0.0,51.0,5.0|3,0.0,51.0,5.0|4,0.0,100.0&chxs=0,000000,13,0|1,000000,13,0|2,000000,13,0|3,000000,13,0|4,000000,13,0&chxt=y,y,t,x,x


3. PieChart
/**
 *
 * The MIT License
 *
 * Copyright (c) 2011 the original author or authors.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:

 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.

 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
package com.jspsmart.charts4j;
import static com.googlecode.charts4j.Color.*;
import org.junit.Test;

import com.googlecode.charts4j.Color;
import com.googlecode.charts4j.GCharts;
import com.googlecode.charts4j.PieChart;
import com.googlecode.charts4j.Slice;

/**
 *
 * @author Julien Chastang (julien.c.chastang at gmail dot com)
 */
public class PieChartExample {

	@Test
    public void example1() {
        // 定义 切片
//      percent - percent of pie. Must be >= 0.
//      color - color of slice.
//      sliceLabel - label associated with slice.	片标签
//      sliceLegend - legend associated with slice. 颜色旁边的片图例
        Slice s1 = Slice.newSlice(30, Color.newColor("CACACA"), "Safari", "Apple");
        Slice s2 = Slice.newSlice(10, Color.newColor("DF7417"), "Firefox", "Mozilla");
        Slice s3 = Slice.newSlice(10, Color.newColor("951800"), "Chrome", "Google");
        Slice s4 = Slice.newSlice(10, Color.newColor("01A1DB"), "Internet Explorer", "Microsoft");

        PieChart chart = GCharts.newPieChart(s1, s2, s3, s4);
        chart.setTitle("A Better Web", BLACK, 16);
        chart.setSize(500, 200);
//        是否开启3D效果
        chart.setThreeD(true);
        String url = chart.toURLString();
        // EXAMPLE CODE END. Use this url string in your web or Internet application.
        System.out.println(url);
    }

    @Test
    public void example2() {
        // EXAMPLE CODE START
        Slice s1 = Slice.newSlice(90, YELLOW, "Ms. Pac-Man");
        Slice s2 = Slice.newSlice(10, RED, "Red Lips");

        PieChart chart = GCharts.newPieChart(s1, s2);
        chart.setTitle("2D Pie Chart", BLACK, 16);
        chart.setSize(500, 200);
        String url = chart.toURLString();
        // EXAMPLE CODE END. Use this url string in your web or Internet application.
        System.out.println(url);
    }

}

example1 url
http://chart.apis.google.com/chart?cht=p3&chs=500x200&chts=000000,16&chd=e:gAKqKqKq&chtt=A+Better+Web&chco=CACACA,DF7417,951800,01A1DB&chdl=Apple|Mozilla|Google|Microsoft&chl=Safari|Firefox|Chrome|Internet+Explorer
example2 url
http://chart.apis.google.com/chart?cht=p&chd=e:5mGa&chs=500x200&chts=000000,16&chtt=2D+Pie+Chart&chco=FFFF00,FF0000&chl=Ms.+Pac-Man|Red+Lips

4. ScatterChart
/**
 *
 * The MIT License
 *
 * Copyright (c) 2011 the original author or authors.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:

 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.

 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

package com.jspsmart.charts4j;
import static com.googlecode.charts4j.Color.WHITE;
import org.junit.Test;

import com.googlecode.charts4j.AxisLabels;
import com.googlecode.charts4j.AxisLabelsFactory;
import com.googlecode.charts4j.AxisStyle;
import com.googlecode.charts4j.AxisTextAlignment;
import com.googlecode.charts4j.Color;
import com.googlecode.charts4j.Data;
import com.googlecode.charts4j.Fills;
import com.googlecode.charts4j.GCharts;
import com.googlecode.charts4j.LinearGradientFill;
import com.googlecode.charts4j.Plots;
import com.googlecode.charts4j.ScatterPlot;
import com.googlecode.charts4j.ScatterPlotData;
import com.googlecode.charts4j.Shape;

/**
 *
 * @author Julien Chastang (julien.c.chastang at gmail dot com)
 */
public class ScatterChartExample {
    @Test
    public void example1() {
        // 定义数据
        Data d1 = Data.newData(10, 50, 30, 45, 65, 95, 20, 80);
        Data d2 = Data.newData(20, 40, 40, 15, 85, 95, 80, 20);
        Data pointSizes = Data.newData(100, 30, 50, 75, 40, 35, 80, 100);
        
//        xData - x data. Cannot be null.
//        yData - y data. Cannot be null.
//        pointSizes - size of x,y data. Cannot be null.
        ScatterPlotData data = Plots.newScatterPlotData(d1, d2, pointSizes);
        
//        图例
        Color shapeColor = Color.newColor("FF471A");
        data.setLegend("表格提示");
        data.setColor(Color.YELLOW);
        data.addShapeMarkers(Shape.CIRCLE, shapeColor, 30);
        ScatterPlot chart = GCharts.newScatterPlot(data);
        chart.setSize(600, 450);
        chart.setGrid(20, 20, 3, 2);

        AxisLabels axisLabels = AxisLabelsFactory.newNumericRangeAxisLabels(0, 100);
        axisLabels.setAxisStyle(AxisStyle.newAxisStyle(WHITE, 13, AxisTextAlignment.CENTER));

        chart.addXAxisLabels(axisLabels);
        chart.addYAxisLabels(axisLabels);

        chart.setTitle("分散表格标题", WHITE, 16);
        
        // 填充背景颜色
        chart.setBackgroundFill(Fills.newSolidFill(Color.RED));
        
//        设置表格背景
        LinearGradientFill fill = Fills.newLinearGradientFill(0, Color.BLUE, 100);
//        添加额外的填充渐变。
        fill.addColorAndOffset(Color.BLACK, 0);
        chart.setAreaFill(fill);
        String url = chart.toURLString();
        // EXAMPLE CODE END. Use this url string in your web or Internet application.
        System.out.println(url);
    }
}

example1 url
http://chart.apis.google.com/chart?cht=s&chxt=y,x&chs=600x450&chco=FFFF00&chts=FFFFFF,16&chg=20.0,20.0,3,2&chm=o,FF471A,0,-1,30,0&chxr=0,0.0,100.0|1,0.0,100.0&chxs=0,FFFFFF,13,0|1,FFFFFF,13,0&chdl=%E8%A1%A8%E6%A0%BC%E6%8F%90%E7%A4%BA&chf=bg,s,FF0000|c,lg,0,0000FF,1.0,000000,0.0&chd=e:GagATNczpm8yMzzM,MzZmZmJm2Z8yzMMz,..TNgAv.ZmWZzM..&chtt=%E5%88%86%E6%95%A3%E8%A1%A8%E6%A0%BC%E6%A0%87%E9%A2%98

5. Swing
/**
 * The MIT License
 *
 * Copyright (c) 2011 the original author or authors.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:

 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.

 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

package com.jspsmart.charts4j;
import java.awt.BorderLayout;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

import org.junit.Ignore;

import com.googlecode.charts4j.Data;
import com.googlecode.charts4j.GCharts;
import com.googlecode.charts4j.LineChart;
import com.googlecode.charts4j.Plot;
import com.googlecode.charts4j.Plots;

/**
 * Example code for displaying a chart via Swing. This is an alternative
 * to displaying charts via JSP and Servlet technology.
 *
 * @author Julien Chastang (julien.c.chastang at gmail dot com)
 */
@Ignore("not a unit test, just a Java Swing example")
public class SwingExample {

    /**
     * main
     *
     * @param s
     *            args not read.
     * @throws IOException
     */
    public static void main(String...s) throws IOException {
        Plot plot = Plots.newPlot(Data.newData(0, 66.6, 33.3, 100));
        LineChart chart = GCharts.newLineChart(plot);
        displayUrlString(chart.toURLString());
    }

    /**
     * Display the chart in a swing window.
     * @param urlString
     *            the url string to display.
     * @throws IOException
     */
    private static void displayUrlString(final String urlString) throws IOException{
        JFrame frame = new JFrame();
        JLabel label = new JLabel(new ImageIcon(ImageIO.read(new URL(urlString))));
        frame.getContentPane().add(label, BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }
}
分享到:
评论
2 楼 rdsgf 2014-06-05  
也就是导出。。。如何把生成的图片导出到本地,有没有接口?
1 楼 rdsgf 2014-06-05  
你好,请问生成的图片如何保存到本地?

相关推荐

Global site tag (gtag.js) - Google Analytics