|
1. Chart Helper
당신은 그래픽 형태로 데이터를 표시하려는 경우 Chart Helper를 사용할 수 있습니다. Chart Helper가 Chart 종류의 다양한 데이터를 표시하는 이미지를 렌더링할 수 있습니다. 그것은 형식 및 라벨링에 대한 다양한 옵션을 지원합니다. Chart Helper는 Microsoft Excel 또는 다른 도구에서 잘 알고있을 Chart의 모든 유형을 포함 30 개 이상의 Chart - 영역 Chart, 막대 Chart, 컬럼 Chart, 라인 Chart와 파이 Chart, 함께 주식 Chart 같은 전문적인 종류를 렌더링할 수 있는 Chart.
Area Chart |
Bar Chart |
Column Chart |
Line Chart |
Pie Chart |
Stock Chart |
2. Chart 요소
Chart는 데이터와 범례(Lengend), 축(Axis), 개별항(Series), 등등 같은 추가 요소를 표시합니다. 다음 그림은 당신이 Chart Helper를 사용하면 사용자 정의할 수있는 Chart 요소 중 많은 것들을 보여줍니다. 이 장에서는 이러한 요소 중 일부(모두 아님)를 설치하는 방법을 보여줍니다.
3. 데이터에서 Chart 만들기
데이터베이스에서 반환된 결과 또는 XML 파일에 데이터, 배열의 데이터로부터 차트에 표시할 수 있습니다.
3-1. 배열을 사용하여
Razor 구문을 사용하여 ASP.NET 웹 프로그래밍 입문의 제 2 장에 설명된대로 , 배열은 하나의 변수에 유사한 항목의 컬렉션을 저장할 수 있습니다. 당신은 Chart에 포함할 데이터를 포함하는 배열을 사용할 수 있습니다.
이 절차는 기본 Chart 유형을 사용하여 배열의 데이터에서 Chart를 만드는 방법을 보여줍니다. 또한 페이지 내에서 Chart를 표시하는 방법을 보여줍니다.
@{ var myChart = new Chart(width: 600, height: 400) .AddTitle("실전 차트 만들기") .AddSeries( name: "종원원", xValue: new[] { "이부장", "이팀장", "장대리","조항연", "김희순", "이은자"}, yValues: new[] {"2", "6", "3", "8", "4", "9"} ) .Write(); } |
3-2. Chart 데이터에 데이터베이스 쿼리를 사용
Chart에 원하는 정보가 데이터베이스에 있으면, 당신은 데이터베이스 쿼리를 실행할 수 있습니다. Chart를 만들 결과에 데이터베이스를 사용합니다. 이 절차에서는 이전 예제에서 만든 데이터를 Chart로 보여줍니다.
@{ var db = Database.Open("SmallBakery"); var data = db.Query("SELECT Name, Price FROM Product"); var myChart = new Chart(width: 600, height: 400) .AddTitle("판매 상품") .DataBindTable(dataSource: data, xField: "Name") .Write(); } |
.DataBindTable(data, "Name") |
.AddSeries("Default", |
3-3. Chart에 XML 데이터를 사용
Chart에 대한 세 번째 옵션은 Chart의 데이터로 XML 파일을 사용하는 것입니다. 이것은 XML 파일은 XML 데이터 구조를 설명하는 스키마(Schema) 파일 (. XSD를 파일)을 가지고 있어야합니다. 이 절차는 어떻게 XML 파일에서 데이터를 읽는 방법을 보여줍니다.
<?xml version="1.0" standalone="yes" ?> <NewDataSet xmlns="http://tempuri.org/data.xsd"> <Employee> <Name>정연우</Name> <Sales>5000</Sales> </Employee> <Employee> <Name>정연일</Name> <Sales>4000</Sales> </Employee> <Employee> <Name>정연재</Name> <Sales>3000</Sales> </Employee> <Employee> <Name>정우화</Name> <Sales>6000</Sales> </Employee> <Employee> <Name>황진숙</Name> <Sales>4000</Sales> </Employee> </NewDataSet> |
<?xml version="1.0" ?> <xs:schema> id="NewDataSet" targetNamespace="http://tempuri.org/data.xsd" xmlns:mstns="http://tempuri.org/data.xsd" xmlns="http://tempuri.org/data.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified"> <xs:element name="NewDataSet"> msdata:IsDataSet="true" msdata:EnforceConstraints="false"> <xs:complexType> <xs:choice maxOccurs="unbounded"> <xs:element name="Employee"> <xs:complexType> <xs:sequence> <xs:element name = "Name" minOccurs="0: /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> |
@using System.Data; @{ var dataSet = new DataSet(); dataSet.ReadXmlSchema(Server.MapPath("~/App_Data/data.xsd")); dataSet.ReadXml(Server.MapPath("~/App_Data/data.xml")); var dataView = new DataView(dataSet.Tables[0]); var myChart = new Chart(width: 600, height: 400) .AddTitle("Sales Per Employee") .AddSeries("Default", chartType: "Pie", xValue: dataView, xField: "Name", yValues: dataView, yFields: "Sales") .Write(); } |
"Using" 문과 완전히 공인된 이름
Razor 구문과 ASP.NET 웹 페이지의 기반이되는. NET Framework는 수천 구성 요소(클래스) 구성되어 있습니다. 그것은 모든 클래스에서 작동하도록 관리하려면, 라이브러리 같은 네임 스페이스로 구성됩니다. 예를 들어, System.Web 네임 스페이스는 브라우저/서버와 통신합니다. System.Xml 네임 스페이스는 생성 및 XML 파일을 읽는 데 사용되는 클래스가 들어있는 클래스를 포함합니다. System.Data 네임 스페이스는 데이터와 함께 작업하는 클래스가 포함되어 있습니다.
. NET Framework에서 특정 클래스를 접근하기 위해서는 코드가 아니라 클래스 이름을뿐만 아니라, 클래스가 속해있는 네임 스페이스를 알아야합니다. Chart Helper를 사용하려면 클래스 이름(Chart)과 네임 스페이스(System.Web.Helpers)를 결합합니다. Web.Helpers.Chart 클래스. . NET Framework의 광대한 내용에 모호하지 않은 위치- 이것은 클래스의 정규화된 이름으로 알려져있다. 코드에서, 이것은 다음과 같이합니다 : var myChart = new System.Web.Helpers.Chart(width: 600, height: 400) 그러나, 그것은 (그리고 오류가 발생하기 쉬운)이 긴, 정규화된 이름은 당신이 클래스 또는 Helper를 참조할 때마다 사용해야하는 성가신 일입니다. 따라서 쉽게 클래스 이름을 사용할 수 있도록, 당신은. NET Framework의 여러 네임 스페이스 중에서 단지 관심있는 네임 스페이스를 가져올 수 있습니다. 당신은 네임 스페이스를 가져온 적이있다면, 당신은 정규화된 이름 (System.Web.Helpers.Chart) 대신 단지 클래스 이름(Chart)을 사용할 수 있습니다. 귀하의 코드를 실행하면 클래스 이름을 만나면, 그것은 그 클래스를 찾기 위해 네임 스페이스에서 찾아볼 수 있습니다. 웹 페이지를 만들 Razor 구문으로 ASP.NET 웹 페이지를 사용하면 일반적으로 웹페이지 클래스, 다양한 헬퍼를 포함한 클래스를 사용합니다. 그것은 자동적으로 모든 웹 사이트에 대한 핵심적인 네임 스페이스의 집합을 가져옵니다. 그래서 당신에게 해당 네임 스페이스에 당신이 웹사이트를 만들 때마다 작업을 저장하면, ASP.NET은 자동으로 구성됩니다. 그것은 당신이 네임 스페이스를 처리하거나 지금까지 가져올 필요가 없었던 이유, 당신이 누려 왔던 모든 편리함은 이미 당신을 위해 가져온 네임 스페이스에 있습니다.
그러나, 가끔은 자동으로 네임 스페이스를 가져오지 않는 클래스와 함께 작업해야합니다. 이 경우, 당신도 그 클래스의 정규화된 이름을 사용하거나 수동으로 클래스를 포함하는 네임 스페이스를 가져올 수 있습니다. 당신은 이전 장에서 예제에서 본 것 같은 네임 스페이스를 가져오려면, 당신은, "Using" 문을사용합니다. 예를 들어, DataSet 클래스는 System.Data 네임 스페이스에 있습니다. System.Data 네임 스페이스가 자동으로 ASP.NET Razor 페이지를 사용할 수 없습니다. 따라서,이 같은 코드를 사용할 수의 정규화된 이름을 사용하여 DataSet 클래스와 함께 작업 :
.NET Framework의 네임 스페이스는 참조하려는 다른 Class에 "Using" 문을 추가할 수 있습니다. 당신이 할 수있는 Class는 대부분 사용하기 위해 ASP.NET에 의해 자동으로 가져온 네임 스페이스에 있기 때문에 자주 이렇게 할 필요가 없습니다. |
4. 웹 페이지 내부에 Chart 표현
지금까지 본 예제에서, 당신은 Chart를 만든 다음 Chart는 그래픽으로 브라우저에 직접 표시됩니다. 대부분의 경우, 비록 그 자체 브라우저에 의해 페이지의 일부로 Chart를 표시하려면. 두 단계 프로세스를 필요로합니다. 첫 번째 단계는 이미 본 적이 있는 것으로 Chart를 생성하는 페이지를 작성하는 것입니다.
두 번째 단계는 다른 페이지에 나타나는 이미지를 표시하는 것입니다. 이미지를 표시하려면, 당신은 어떤 이미지를 표시한 방법으로 HTML <img> 요소 같은 것을 사용합니다. 그러나 . jpg 또는. PNG를 참조하는 대신에 <img> 요소는 차트를 만드는 Chart Helper를 포함하는 .csHtml 파일을 참조합니다. 디스플레이 페이지가 실행되면, <img> 요소는 Chart Helper의 출력을 얻고 Chart를 렌더링합니다.
<!DOCTYPE html> <html> <head> <title>Chart Example</title> </head> <body> <h1>차트 샘플입니다</h1> <p>다음의 차는는 <em>ChartArrayBasic.cshtml</em> 파일에서 만들어진 것입니다. 그러나 이 페이지에서 보입니다..</p> <p><img src="ChartArrayBasic.cshtml" /> </p> </body> </html> |
5. Chart 스타일링
Chart Helper는 Chart의 모양을 사용자 정의할 수 있도록 옵션을 다수를 지원합니다. 당신은 색상, 글꼴, 테두리, 등을 설정할 수 있습니다. Chart의 모양을 사용자 정의하는 쉬운 방법은 테마를 사용하는 것입니다. 테마는 글꼴, 색상, 라벨, 팔레트, 테두리, 및 효과를 사용하여 Chart를 렌더링하는 방법을 지정하는 정보의 모음입니다. (Chart의 스타일이 Chart의 유형을 표시하지 않습니다.)
테마 | 설명 |
Vanilla | 흰색 바탕에 붉은 기둥 표시 |
Blue |
파란색으로 표시. 파란색 그라디언트 배경에 파란색 기둥 |
Green | 녹색 표시. 녹색 그라디언트 배경에 파란색 기둥 |
Yello | 노란 그라데이션 배경에 노란색 표시. 오렌지 열 |
Vanilla3D | 흰색 배경에 3D 붉은 기둥 |
당신은 새로운 Chart를 만들 때 사용할 수있는 테마를 지정할 수 있습니다.
@{ var db = Database.Open("SmallBakery"); var data = db.Query("SELECT Name, Price FROM Product"); var myChart = new Chart(width: 600, height: 400, theme: ChartTheme.Green) .AddTitle("판매 상품") .DataBindTable(data, "Name") .Write(); } |
6. Chart 저장
이 장에서 지금까지 본 대로 차트 Helper를 사용하면, Helper는 처음부터 그것은 호출의 때마다 다시 Chart를 만듭니다. 필요한 경우, 또한 Chart에 대한 코드를 다시 데이터베이스 또는 다시 데이터를 얻을 수있는 XML 파일을 읽고 쿼리합니다. 어떤 경우에는, 이 같은 경우 데이터베이스가 크거나 XML 파일의 데이터가 많이 포함되어있는 경우 같은 복잡한 작업이 될 수 있습니다. Chart의 데이터를 많이 포함하지 않더라도 많은 사람들이 페이지 또는 Chart를 표시할 페이지를 요청하면, 동적으로 이미지를 만드는 과정은 서버 리소스를 차지하고, 귀하의 웹사이트의 성능에 영향이있을 수 있습니다.
Chart를 만드는 잠재적인 성능 저하를 줄일 수 있도록, 당신은 Chart를 처음 만든 다음 그것을 저장합니다. Chart가 다시 필요하면 당신은 단지 저장된 버전을 렌더링하여 그것을 가져올 수 있습니다.
이런 방법으로 Chart를 저장할 수 있습니다:
Chart를 생성한 후, 캐시에 그것을 저장할 수 있습니다. Chart를 캐싱하여 다시 표시해야 할 경우 다시 만들 수 없다는 것을 의미합니다. 당신은 캐시에 Chart를 저장할 때 Chart에 대한 고유한 Key 값이 있어야 합니다.
서버가 메모리가 부족하면 캐시에 저장된 Chart를 제거될 수 있습니다. 또한, 캐시가 어떠한 이유로도 귀하의 응용 프로그램을 다시 시작하는 경우 지워집니다. 따라서 표준적인 방법은 Chart가 항상 캐시될 수 있는지, 아닌지 그리고 다시 차트를 만들수 있는지를 먼저 확인하는 것이 필요합니다.
<!DOCTYPE html> <html> <head> <title>Chart Example</title> </head> <body> <h1>캐쉬드 차트 샘플</h1> <img src="ChartSaveToCache.cshtml?Key=mychartKey" /> </body> </html> |
@{ var charKey = request["key"]; if (chartkey != null){ var cachedChart = Chart.GetFromCache(key: chartkey); if (cachedChart == null){ cachedChart = new Chart(600, 400); cachedChart.AddTitle("Cached Chart --Cached at" + DateTime.Now); cachedChart.AddSeries( name: "종업원", axisLabel: "Name", xValue: new[] {"우화", "춘자", "월화", "권화"} yValues: new[] {"2", "6", "4", "3"} cachedChart.SaveToCache(key: chartkey, minutesToCache: 2, slidingExpiration: false; } Chart.WriteFromCache(chartkey); } } |
6.2. 이미지 파일로 Chart를 저장
당신은 또한 서버에 이미지(예를 들어, 파일을 .JPG) 파일로 Chart를 저장할 수 있습니다. 그런 다음 이미지는 모든 이미지 파일 방식으로로 사용할 수 있습니다. 장점은 파일이 아닌 저장된 임시 캐시에 저장됩니다. 당신은 다른 시간 (예를 들어, 매 시간마다)에 새로운 Chart 이미지를 저장하고 다음 시간이 지남에 발생하는 변경 사항을 영구적으로 기록을 유지할 수 있습니다. 귀하의 웹 응용 프로그램은 이미지 파일을 저장하고 싶은 서버의 폴더에 파일을 저장할 수있는 권한을 가지고 있는지 확인해야합니다.
@{ <!DOCTYPE html> |
6-3. XML 파일로 Chart를 저장
마지막으로, 당신은 서버에서 XML 파일로서 Chart를 저장할 수 있습니다. 이 메서드를 사용하는 잇점은
Chart 캐싱을 통해 사용하거나 파일에 Chart를 저장하는 것에서 당신이 원한다면 Chart를 표시하기 전에 XML을 수정할 수 있습니다. 응용 프로그램에서 이미지 파일을 저장하는 서버의 폴더에 대한 읽기/쓰기 권한을 가지고 있어야합니다.
@{ Chart chartXml; var filePathName = "_ChartFiles/XmlChart.xml"; if (File.Exists(Server.MapPath(filePathName))){ chartXml = new Chart(600, 400, themePath: filePathName); } else{ charXml = new Chart(600, 400); chartXml.AddTitle("차트 제목--저장 중 " + DateTime.Now); chartXml.Addseries( name: "종업원", axisLabel: "Name", xValue: new[] {"이부장", "황실장", "이팀장", "강차장"}, yValues: new[] {"2", "6", "4", "3"}); chartXml.SaveXml(path: filePathName); } chartXml.Write(); } |
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Display chart from XML</title> </head> <body> <img src="ChartSaveXML.cshtml" /> </body> </html> |
|