Background

Today we will discuss the Bubble type chart of ASP.Net. We will learn about this chart type control step-by-step. Now let us learn about the properties of the Bubble charts. A Bubble chart type has the following common properties:
  • AlternetText: Sets the alternate text when the image is not available.

  • Annotation: Stores the chart annotations.

  • AntiAliasing: Sets a value that determines whether anti-aliasing is used when text and graphics are drawn.

  • BackGradientStyle: Sets the orientation for the background gradient for the Chart control. Also determines whether a gradient is used, the default is None.

  • Backcolor: Sets the background color for a chart, the default color is White.

  • BackImage: Sets the background image for the chart control.

  • BackHatchStyle: Sets the hatching style for the chart control, the default is None.

  • Height: Sets the height for the chart control.

  • Width: Sets the width for the chart control.

  • Palette: Sets the style with the color for the chart control, the default style is Chocolate.

  • PaletteCustomColors: Sets the custom color for the chart control.

  • Series: Sets the series collection for the chart control.

  • Legends: Sets the series of legends for the chart.
Now let us show the preceding explanation with a practical example by creating a simple web application.
Step 1

Use the following script to create a table for the chart data:
  1. CREATE TABLE [dbo].[orderdet](
  2. [id] [int] IDENTITY(1,1) NOT NULL,
  3. [Month] [varchar](50) NULL,
  4. [Orders] [int] NULL,
  5. CONSTRAINT [PK_Order Table] PRIMARY KEY CLUSTERED
  6. (
  7. [id] ASC
  8. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  9. ) ON [PRIMARY]
  10. GO
Now the design will look as follows:
Now insert the records using the following script:
  1. SET IDENTITY_INSERT [dbo].[orderdet] ON
  2. GO
  3. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (1, N'Jan', 0)
  4. GO
  5. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (2, N'Feb', 5)
  6. GO
  7. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (3, N'March', 20)
  8. GO
  9. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (4, N'April', 40)
  10. GO
  11. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (5, N'May', 15)
  12. GO
  13. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (6, N'Jun', 60)
  14. GO
  15. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (7, N'July', 75)
  16. GO
  17. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (8, N'Aug', 80)
  18. GO
  19. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (9, N'Sep', 85)
  20. GO
  21. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (10, N'Oct', 100)
  22. GO
  23. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (11, N'Nov', 2)
  24. GO
  25. INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (12, N'Dec', 90)
  26. GO
  27. SET IDENTITY_INSERT [dbo].[orderdet] OFF
  28. Go
After running the preceding script the records in the table will look as follows:
Step 2
Create a Stored Procedure to fetch the records from the database.
  1. Create procedure [dbo].[GetCharData]
  2. (
  3. @id int =null
  4. )
  5. as
  6. begin
  7. Select Month,Orders from Orderdet
  8. End
Step 3
Create a Web Application. Create the website with:
  1. "Start" - "All Programs" - "Microsoft Visual Studio 2010".

  2. "File" - "New Project" - "C#" - "Empty Website" (to avoid adding a master page).

  3. Provide the project a name such as "UsingBubbleChart" or another as you wish and specify the location.

  4. Then right-click on the Solution Explorer and select "Add New Item" then select Default.aspx page.

  5. Drag and Drop a Chart control from the ToolBox onto the Default.aspx page.
Now the Default.aspx source code will be as follows:
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2. <%@ Register Assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
  3. Namespace="System.Web.UI.DataVisualization.Charting" TagPrefix="asp" %>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head runat="server">
  7. <title>Article by Vithal Wadje</title>
  8. </head>
  9. <body bgcolor="black">
  10. <form id="form1" runat="server">
  11. <h4 style="color: White;">
  12. Article for C#Corner
  13. </h4>
  14. <asp:Chart ID="Chart1" runat="server" BackColor="192, 64, 0" BackGradientStyle="LeftRight"
  15. BorderlineWidth="0" Height="360px" Palette="None" PaletteCustomColors="128, 64, 0"
  16. Width="380px" BorderlineColor="255, 128, 0">
  17. <Series>
  18. <asp:Series Name="Series1" YValuesPerPoint="12">
  19. </asp:Series>
  20. </Series>
  21. <ChartAreas>
  22. <asp:ChartArea Name="ChartArea1">
  23. </asp:ChartArea>
  24. </ChartAreas>
  25. </asp:Chart>
  26. </form>
  27. </body>
  28. </html>
Step 4
Create a method to bind the chart control. Then open the default.aspx.cs page and create the following function named Bindchart to bind the Chart Control as in the following:
  1. private void Bindchart()
  2. {
  3. connection();
  4. com = new SqlCommand("GetCharData", con);
  5. com.CommandType = CommandType.StoredProcedure;
  6. SqlDataAdapter da = new SqlDataAdapter(com);
  7. DataSet ds = new DataSet();
  8. da.Fill(ds);
  9. DataTable ChartData = ds.Tables[0];
  10. //storing total rows count to loop on each Record
  11. string[] XPointMember = new string[ChartData.Rows.Count];
  12. int[] YPointMember = new int[ChartData.Rows.Count];
  13. for (int count = 0; count < ChartData.Rows.Count; count++)
  14. {
  15. //storing Values for X axis
  16. XPointMember[count] = ChartData.Rows[count]["Month"].ToString();
  17. //storing values for Y Axis
  18. YPointMember[count] = Convert.ToInt32(ChartData.Rows[count]["Orders"]);
  19. }
  20. //binding chart control
  21. Chart1.Series[0].Points.DataBindXY(XPointMember, YPointMember);
  22. //Setting width of line
  23. Chart1.Series[0].BorderWidth = 1;
  24. //setting Chart type
  25. Chart1.Series[0].ChartType = SeriesChartType.Bubble;
  26. //Hide or show chart back GridLines
  27. // Chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = false;
  28. // Chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.Enabled = false;
  29. //Enabled 3D
  30. // Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;
  31. con.Close();
  32. }
Now, call the preceding function on page load as in the following
  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. if (!IsPostBack)
  4. {
  5. Bindchart();
  6. }
  7. }
The entire code of the default.aspx.cs page will look as follows:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. using System.Data.SqlClient;
  8. using System.Configuration;
  9. using System.Data;
  10. using System.Web.UI.DataVisualization.Charting;
  11. public partial class _Default : System.Web.UI.Page
  12. {
  13. private SqlConnection con;
  14. private SqlCommand com;
  15. private string constr, query;
  16. private void connection()
  17. {
  18. constr = ConfigurationManager.ConnectionStrings["getconn"].ToString();
  19. con = new SqlConnection(constr);
  20. con.Open();
  21. }
  22. protected void Page_Load(object sender, EventArgs e)
  23. {
  24. if (!IsPostBack)
  25. {
  26. Bindchart();
  27. }
  28. }
  29. private void Bindchart()
  30. {
  31. connection();
  32. com = new SqlCommand("GetCharData", con);
  33. com.CommandType = CommandType.StoredProcedure;
  34. SqlDataAdapter da = new SqlDataAdapter(com);
  35. DataSet ds = new DataSet();
  36. da.Fill(ds);
  37. DataTable ChartData = ds.Tables[0];
  38. //storing total rows count to loop on each Record
  39. string[] XPointMember = new string[ChartData.Rows.Count];
  40. int[] YPointMember = new int[ChartData.Rows.Count];
  41. for (int count = 0; count < ChartData.Rows.Count; count++)
  42. {
  43. //storing Values for X axis
  44. XPointMember[count] = ChartData.Rows[count]["Month"].ToString();
  45. //storing values for Y Axis
  46. YPointMember[count] = Convert.ToInt32(ChartData.Rows[count]["Orders"]);
  47. }
  48. //binding chart control
  49. Chart1.Series[0].Points.DataBindXY(XPointMember, YPointMember);
  50. //Setting width of line
  51. Chart1.Series[0].BorderWidth = 1;
  52. //setting Chart type
  53. Chart1.Series[0].ChartType = SeriesChartType.Bubble;
  54. //Hide or show chart back GridLines
  55. // Chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = false;
  56. // Chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.Enabled = false;
  57. //Enabled 3D
  58. // Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;
  59. con.Close();
  60. }
  61. }
Now, we have the entire logic to bind the chart from the database, let us run the application. The Bubble Chart will then look as follows:
Now let us hide the Grid Lines as in the following:
  1. //Hide or show chart back GridLines
  2. Chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = false;
  3. Chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.Enabled = false;
Now the Bubble chart will be as follows:
The preceding is the Normal Bubble chart. Now let us enable the 3D style as in the following:
  1. //Enabled 3D
  2. Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;
Now the 3D style chart will be as:
Let us hide the Grid Line in 3D style as:
  1. //Hide or show chart back GridLines
  2. Chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = false;
  3. Chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.Enabled = false;
Now the Bubble chart will look as follows:
Now from all the preceding explanations we saw how to create and use a Bubble type chart.

Notes
  • Download the Zip file from the attachment for the full source code of the application.

  • Change the connection string in the web.config file to specify your server location.
Summary
My next article explains another chart type of ASP.Net. I hope this article is useful for all readers, if you have any suggestion then please contact me including beginners also.