Click here to Skip to main content
15,888,733 members
Articles / Web Development / HTML

Google Charts in .NET

Rate me:
Please Sign up or sign in to vote.
2.55/5 (17 votes)
21 Jan 2008CPOL2 min read 101.4K   3.1K   60  
Google Charts in .NET
using System;
using System.Text;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Summary description for PieGraph
/// </summary>
public class PieGraph
{
    //private variables
    private DataTable dtGraphData =new DataTable();
    private string GTitle;
    private string GColors;
    private string GWidth;
    private string GHeight;
    private string GTitleColor;
    private string GTitleSize;
    //Set the properties 


    /// <summary>
    /// Grpah Title to be displayed above the Graph
    /// </summary> 
    public string GraphTitle
    {
        set { GTitle = value; }
    }

    /// <summary>
    /// DataSet  for Drawing the Graph Column:2 for Labels and Column:3 for Column Data
    /// </summary> 
    public DataTable dtData
    {
        set { dtGraphData = value;}
    }

    /// <summary>
    /// Colors to be displayed in the graph one or n number of colors eg: A333EE or A333EE,A311EE,1133EE 
    /// </summary> 
    public string GraphColors
    {
        set { GColors = value; }
    }

    /// <summary>
    /// Graph Dimesions width (2:1 -|- width:height)
    /// </summary> 
    public string GraphWidth
    {
        set { GWidth = value; }
    }
    /// <summary>
    /// Graph Dimesions Height (2:1 -|- width:height)
    /// </summary> 
    public string GraphHeight
    {
        set { GHeight = value; }
    }

    /// <summary>
    /// Graph Title Color (Title Font Color eg:5533AA)
    /// </summary> 
    public string GraphTitleColor
    {
        set { GTitleColor  = value; }
    }

    /// <summary>
    /// Graph Title Size (Title Font Size in pixcels 1-20)
    /// </summary>     
    public string GraphTitleSize
    {
        set { GTitleSize = value; }
    }



   
    //Method to find the max Data in the given Data
    public int GetMaxVal(DataTable dt)
    {
        int max = 0;
        int cval = 0;
        foreach (DataRow dr in dt.Rows)
        {
            cval = Convert.ToInt32(dr[2]);
            if (cval >= max)
            {
                max = cval;
            }
        }
        return max;
    }

    
    /// <summary>
    /// Method which returns the Url be placed in the image src tag
    /// </summary>
    /// <returns>URL String </returns>
    public string GenerateGraph()
    {
        //Get the Data to draw the graph
        DataTable dt = new DataTable();
        dt = dtGraphData;

        //Get the max vals in the Data
        int maxval = GetMaxVal(dt);

        

        //SAMPLE: http://chart.apis.google.com/chart?cht=p3&chs=400x200&chd=s:asR&chl=A|B|C
        string GReqURL = "http://chart.apis.google.com/chart?chts="+GTitleColor+","+GTitleSize+"&chtt="+GTitle+"&chco="+GColors+"&cht=p3&chs="+GWidth+"x"+GHeight;

        //chts for Title Style : color,size
        //chtt for title text 
        //chco for colors: one or many


        string simpleEncoding = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        string chartData = string.Empty;
        string chartLabels = string.Empty;
        StringBuilder strbchartData = new StringBuilder();
        StringBuilder strbchartLabels = new StringBuilder();

        strbchartData.Append("&chd=s:");
        strbchartLabels.Append("&chl=");

        int strlen = simpleEncoding.Length - 1;
        foreach (DataRow dr in dt.Rows)
        {
            //Generate the chart DATA
            int arrVal = Convert.ToInt32(dr[2]);
            int len = strlen * arrVal / maxval;
            strbchartData.Append(simpleEncoding.Substring(len, 1));

            //Generate the Chart Labels
            strbchartLabels.Append(dr[1] + "|");
        }

        //Converting the string builder to string
        chartData = strbchartData.ToString();
        chartLabels = strbchartLabels.ToString();

        chartLabels = chartLabels.Substring(0, chartLabels.Length - 1);
        return GReqURL + chartData + chartLabels;
    }
    
    //End of the method

}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Technical Lead Imaginnovate TechSolutions
India India
Spends free time, working with new stuff from Microsoft and Web technologies. Recently started working on "Ruby on Rails" and other open source technologies.

Comments and Discussions