ASP NET - Dados - Chart

Durante bilhares de anos nós programadores esperamos um componente gráfico web a altura de um office com um visual perfeito. Pois é, pode parar de sonhar que ele existe. São os controles de Exibição de dados via Graficos. Este é um dos melhores deles....e duvido que não tenha seja lá o que for que você precisa.

Mesmo o controle chart estando disponível no item dados da caixa de ferramenta é necessário adequar o projeto a eles e o Visual Studio faz isso automaticamente.

Para facilitar o desenvolvimento sugiro mudar a maneira de inserir o Chart na página.
Clique na aba 'Design' para visualizar o Design da página e, no design da página, arraste o controle chart. Isto fará ser anexado na xxx..aspx.designer.vb o controle chart dessa maneira:
Protected WithEvents Chart1 As Global.System.Web.UI.DataVisualization.Charting.Chart
Acho mais fácil clicar em Desing e arrastar o controle do que abrir o design(não recomendado) e acrescentar a referencia na mão.

Ao clicar no controle chart e arrastar para o design o seguinte código é inserido na página:
                <asp:Chart ID="Chart1" runat="server">
                    <Series>
                        <asp:Series Name="Series1">
                        </asp:Series>
                    </Series>
                    <ChartAreas>
                        <asp:ChartArea Name="ChartArea1">
                        </asp:ChartArea>
                    </ChartAreas>
                </asp:Chart>

Contudo o gráfico ainda está vazio por falta de dados e falta definir os dados que ele deve exibir.

Vamos definir primeiramente o tipo do gráfico. Selecionando a aba 'Design' do Visual Studio e clique no gráfico. No topo do lado direito do do gráfico clique na seta como na imagem abaixo:

e escolha o tipo do gráfico:
01 - Colunas - Column
02 - Pontos - Points
03- FastPoint
04 - Buble
05 - Linhas - Line
06 - SteptLine
07 - FastLine
08 - Barras - Bars
09 - StackedBar
10 - StackedBar100
11 - Colunas - Column - Default
12 - StackedColumn
13 - StackedColumn100
14 - Area
15 - SplineArea
16 - StackedArea
17 - StackedArea100
18 - Torta - Pie
19 - Rosquinha - Donut
20 - Stock
21 - CandleStick
22 - Faixa - Range

Agora vamos adicionar dados ao nosso gráfico.
O normal é clicar novamente na seta no topo direito do gráfico e clicar em 'Escolher fonte de dados'. A fonte de dados pode ser um arquivo XML, um banco de dados SQL, dados via Entity Framework, via LINQ, Mapa do Site, Objeto DataSet.

Para efeitos didáticos e para simplificar o projeto vamos definir os dados manualmente porque aí fica claro como o componente trabalha.

Logo após <asp:Series acrescente os dados da seguinte maneira :

                        <Points>
                            <asp:DataPoint AxisLabel="Jan" YValues="150" />
                            <asp:DataPoint AxisLabel="Fev" YValues="130" />
                            <asp:DataPoint AxisLabel="Mar" YValues="170" />
                            <asp:DataPoint AxisLabel="Jun" YValues="160" />
                            <asp:DataPoint AxisLabel="Jul" YValues="190" />
                            <asp:DataPoint AxisLabel="Ago" YValues="170" />
                            <asp:DataPoint AxisLabel="Set" YValues="167" />
                            <asp:DataPoint AxisLabel="Out" YValues="193" />
                            <asp:DataPoint AxisLabel="Nov" YValues="213" />
                            <asp:DataPoint AxisLabel="Dez" YValues="250" />
                        </Points>

Clique no gráfico e altere o parametro width para a largura desejada do gráfico.

Cada dado do gráfico será definido pela tag <asp:DataPoint.

O parâmetro 'AxisLabel' define o que será exibido no eixo do gráfico e YValues são os valores a serem exibidos.

No modo design clique no gráfico e a seguir no gráfico. Clique na seta no topo direito do mouse e selecione o tipo do gráfico para ver como fica cada tipo de gráfico.

Se for point ou fast point fica assim:

Se for buble (bolha):

Se for linhas (line):

Se for spline ( = line só que com bordas achatadas):

Se for stepline ( escada ou degrau ):

Se for fastline :

Se for barras(bar) ou StackedBar :

Se for StackedBar100 :

Se for Colunas (column - default) ou StackedColumn :

Se for StackedColumns100:

Se for area:

Se for splinearea:

Se for stackedarea:

Se for stackedarea100:

Se for torta (pie):

Se for rosquinha (dourght):

Se for stock ou CandleStick (Candelabro):

Se for range (faixa):

Se for splinerange:

Se for rangebar:

Se for rangecolumn:

Se for radar :

Se for polar :

Se for errorbar :

Se for boxplot :

Se for renko :

Se for threelinebreak :

Se for kagi :

Se for pointandfigure :

Se for funil (funnel) :

Se for piramide (pyramid) :

Importante : O objeto Chart cria um 'rascunho' do elemento html a ser exibido na página numa pasta do disco designada no arquivo web.config. Portanto se o seu site está num servidor web você precisará informar essa pasta 'rascunho ou temp' e setar as permissões para que o controle tenha acesso a pasta. O código no web.config é o seguinte:

<?xml version="1.0"?>
<configuration>
    <appSettings>
        <add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
    </appSettings>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <handlers>
            <remove name="ChartImageHandler" />
            <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
                path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        </handlers>
    </system.webServer>
    <system.web>
        <httpHandlers>
            <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                validate="false" />
        </httpHandlers>
        <pages>
            <controls>
                <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting"
                    assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
            </controls>
        </pages>
        <compilation debug="false" targetFramework="4.0" />
    </system.web>
</configuration>

A pasta c:\TempImageFiles\; funciona para o IIS local mas no servidor web precisará ser outra, provavelmente.