Extending ASP.NET: Рисуем диаграммы и графики с помощью Chart

пятница, 11 июня 2010, Александр Краковецкий

В ASP.NET 4.0 появился новый элемент управления под названием Chart (раньше его можно было установить как отдельный компонент).

Скачать Microsoft Chart Controls for Microsoft .NET Framework 3.5 можно здесь.

Возможности элемента управления:

  • 35 различных типов диаграмм
  • Неограниченное количество районов диаграмм, заголовков, легенд и аннотаций
  • Огромное количество настроек для каждого типа диаграмм
  • 3-D версия большинства типов диаграмм
  • Подписи данных, которые можно размещать вокруг вершин
  • Линия интервалов(Strip lines), масштабирование разрывов и логарифмический масштаб
  • Более 50 финансовых и статистических формул для анализа данных и преобразований
  • Простое связывание и управление данными диаграммы
  • Поддержка распространенных типов данных, таких как: дата, время и валюта
  • Поддержка интерактивных и событийных изменений, включая обработку событий нажатия мышкой
  • Управление состоянием

Пример графиков, которые можно создавать с помощью элемента управления Chart:

alt text

Примеры использования диаграмм ASP.NET можно загрузить на странице Samples Environment for Microsoft Chart Controls.

Добавление элемента управления Chart на веб-страницу

Новый элемент управления можно найти в Toolbox в вкладке Data:

alt text

Добавляем на форму и получаем код элемента управлению по умолчанию:

<asp:Chart ID="Chart1" runat="server">        
    <Series>            
         <asp:Series Name="Series1"></asp:Series>
     </Series>        
     <ChartAreas>            
          <asp:ChartArea Name="ChartArea1"></asp:ChartArea>        
     </ChartAreas>    
</asp:Chart>

При перетаскивании элемента управления на форму вверху добавится объявление сборки System.Web.DataVisualization:

<%@ Register Assembly="System.Web.DataVisualization, 
Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
Namespace="System.Web.UI.DataVisualization.Charting" TagPrefix="asp" %>

Если мы запустим приложение, то увидим ошибку: "Error executing child request for ChartImg.axd". Это связано с тем, что для элемента управления не задан способ хранения временных изображений. Это делается с помощью свойства ImageStorageMode. Есть два вида способы работы - использовать http handler или использовать папку для хранения файлов.

В первом случае необходимо:

Установить свойство ImageStorageMode в UseImageLocation:

<asp:Chart ID="Chart1" runat="server" ImageStorageMode="UseImageLocation">

Добавить в web.config (system.web -> httpHandlers) в секцию httpHandlers новый путь ChartImg.axd таким образом:

<httpHandlers>      
<add path="ChartImg.axd" verb="GET,HEAD,POST" 
type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, 
Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>    
</httpHandlers>

После этого приложение не вылетит в процессе выполнения.

На данном этапе мы не увидим изображения, так как мы не задали никаких данных для отображения, но в HTML коде будет добавлено изображение:

<img id="MainContent_Chart1" src="ChartPic_000001.png?125ecd22-b1dc-4912-96c3-478d4f06bd29" 
alt="" style="height:300px;width:300px;border-width:0px;" />

Основные элементы Chart

Для начала работы добавим тестовые данные (Points) в контейнер Series (Points). Вы также можете добавлять несколько серий данных, которые будут отображаться на одном графике.

В качестве примера возьмем значения функции y=x^2.

<asp:Series Name="Series1">        
    <Points>            
        <asp:DataPoint XValue = "-3" YValues="9" />            
        <asp:DataPoint XValue = "-2" YValues="4" />           
        <asp:DataPoint XValue = "-1" YValues="1" />            
        <asp:DataPoint XValue = "0" YValues="0" />            
        <asp:DataPoint XValue = "1" YValues="1" />            
        <asp:DataPoint XValue = "2" YValues="4" />            
        <asp:DataPoint XValue = "3" YValues="9" />        
    </Points>    
</asp:Series>

Для отображения графика Chart должен содержать, как минимум, одну область для отображения - ChartArea, которая размещается внутри контейнера ChartAreas (о настройке поговорим ниже).

После этого вы увидите такой график:

alt text

Для отображения подписей к сериям данных необходимо добавить элемент Legend:

<Legends>
     <asp:Legend Name="Legend1" Title="Title" />
</Legends>

Добавим еще одну серию данных, на этот раз функции y=x^3, после чего код будет иметь такой вид:

<asp:Chart ID="Chart1" runat="server" ImageStorageMode="UseImageLocation">        
    <Series>            
        <asp:Series Name="Series1">                
            <Points>                    
                <asp:DataPoint XValue = "-3" YValues="9" />                    
                <asp:DataPoint XValue = "-2" YValues="4" />                    
                <asp:DataPoint XValue = "-1" YValues="1" />                   
                <asp:DataPoint XValue = "0" YValues="0" />                    
                <asp:DataPoint XValue = "1" YValues="1" />                    
                <asp:DataPoint XValue = "2" YValues="4" />                    
                <asp:DataPoint XValue = "3" YValues="9" />                
            </Points>            
        </asp:Series>            
        <asp:Series Name="Series2">                
            <Points>                    
                <asp:DataPoint XValue = "-3" YValues="27" />                    
                <asp:DataPoint XValue = "-2" YValues="8" />                    
                <asp:DataPoint XValue = "-1" YValues="1" />                    
                <asp:DataPoint XValue = "0" YValues="0" />                    
                <asp:DataPoint XValue = "1" YValues="1" />                    
                <asp:DataPoint XValue = "2" YValues="8" />                   
                <asp:DataPoint XValue = "3" YValues="27" />                
            </Points>            
        </asp:Series>        
    </Series>        
<ChartAreas>            

<asp:ChartArea Name="ChartArea1" /></ChartAreas>        
<Legends>      
     <asp:Legend Name="Legend1" Title="Title" />     
</Legends>     
</asp:Chart>

После запуска мы увидим следующий график:

alt text

Рассмотрим детальнее, как можно управлять отображением графиков.

Создание 3D-графика

Для создания графика в 3D необходимо воспользоваться свойством area3DStyle элемента ChartArea:

<asp:ChartArea Name="ChartArea1">         
    <area3dstyle Rotation="10" Perspective="10" Enable3D="True" Inclination="15" IsClustered="False" /> 
</asp:ChartArea>

area3dstyle содержит несколько интересных свойств:

  • Rotation позволяет задать поворот;
  • Perspective позволяет задать перспективу;
  • Enable3D отвечает за отображение графика в 3D;
  • IsClustered позволяет управлять кластерами данных.

В результате получим следующий график:

alt text

Типы графиков

Как уже говорилось, можно создавать графики разных видов. Указать тип графика можно с помощью свойства ChartType в элементе Series:

alt text

Установим тип нашего графика как pie (круговая диаграмма):

<asp:Series Name="Series1" ChartType="Pie">

Результат будет следующим:

alt text

Таким образом вы можете создавать любые типы графиков очень просто.

Привязка данных

Ситуации, когда данные вводятся вручную, очень редки, чаще используются источники данных. Рассмотрим, как отобразить данные, используя источник данных.

Для этого создадим источник данных, например DataTable и напишем следующий код:

DataTable dt = new DataTable();
dt.Columns.Add(&quot;1&quot;);
dt.Columns.Add(&quot;2&quot;);
for (int i = 0; i &lt; 10; i++)
{
    DataRow row = dt.NewRow();
    row[0] = i.ToString();
    row[1] = i.ToString();
    dt.Rows.Add(row);
}

Chart1.DataSource = dt;
Chart1.Series[&quot;Series1&quot;].XValueMember = &quot;1&quot;;
Chart1.Series[&quot;Series1&quot;].YValueMembers = &quot;2&quot;;
Chart1.DataBind();

В результате мы увидим следующий график:

alt text

Как вы видите, основным моментом является необходимость установить XValuemember и YValuemember для серии, которая будет использоваться для отображения. В остальном, принципы работы с источниками данных мало отличаются от работы с другими элементами управления.

На этом пока все, надеюсь, что это небольшое руководство поможет вам научится рисовать красивые диаграммы и графики с использованием элемента управления Chart.

Компании из статьи


Microsoft Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии