CPieChart

파이 차트를 플로팅하는 클래스.

ccanvas_piechart

위 그림의 코드는 아래와 같습니다.

설명

이 클래스에 포함된 메서드는 그래픽 리소스 만들기부터 레이블 설계, 세그먼트 설계에 이르기까지 파이 차트를 사용하여 전체 작업을 수행할 수 있도록 설계되었습니다.

선언

   class CPieChart : public CChartCanvas

제목

   #include <Canvas\Charts\PieChart.mqh>

상속 계층

  CCanvas

      CChartCanvas

          CPieChart

클래스 메서드

메서드

액션

Create

그래픽 리소스를 생성하는 가상 메서드.  

SeriesSet

파이 차트에 표시할 일련의 값을 설정.

ValueAdd

파이 차트의 끝에 새 값을 추가.

ValueInsert

지정한 포지션에 파이 차트에 새 값을 삽입.

ValueUpdate

지정된 포지션에 있는 파이 차트 값을 업데이트.

ValueDelete

지정된 포지션에 있는 파이 차트에서 값을 제거.

DrawChart

파이 차트와 해당 요소를 모두 그리는 가상 메서드.

DrawPie

지정된 값에 해당하는 파이 차트의 세그먼트 그리기.                                                        

LabelMake

값과 원래 레이블을 기준으로 세그먼트 레이블을 생성.

클래스 CCanvas에서 상속된 메서드

CreateBitmap, CreateBitmap, CreateBitmapLabel, CreateBitmapLabel, Attach, Attach, Destroy, ChartObjectName, ResourceName, Width, Height, Update, Resize, Erase, PixelGet, PixelSet, LineVertical, LineHorizontal, Line, Polyline, Polygon, Rectangle, Triangle, Circle, Ellipse, Arc, Arc, Arc, Pie, Pie, FillRectangle, FillTriangle, FillPolygon, FillCircle, FillEllipse, Fill, Fill, PixelSetAA, LineAA, PolylineAA, PolygonAA, TriangleAA, CircleAA, EllipseAA, LineWu, PolylineWu, PolygonWu, TriangleWu, CircleWu, EllipseWu, LineThickVertical, LineThickHorizontal, LineThick, PolylineThick, PolygonThick, PolylineSmooth, PolygonSmooth, FontSet, FontNameSet, FontSizeSet, FontFlagsSet, FontAngleSet, FontGet, FontNameGet, FontSizeGet, FontFlagsGet, FontAngleGet, TextOut, TextWidth, TextHeight, TextSize, GetDefaultColor, TransparentLevelSet, LoadFromFile, LineStyleGet, LineStyleSet

CChartCanvas 클래스에서 상속된 메서드

ColorBackground, ColorBackground, ColorBorder, ColorBorder, ColorText, ColorText, ColorGrid, ColorGrid, MaxData, MaxData, MaxDescrLen, MaxDescrLen, AllowedShowFlags, ShowFlags, ShowFlags, IsShowLegend, IsShowScaleLeft, IsShowScaleRight, IsShowScaleTop, IsShowScaleBottom, IsShowGrid, IsShowDescriptors, IsShowPercent, ShowLegend, ShowScaleLeft, ShowScaleRight, ShowScaleTop, ShowScaleBottom, ShowGrid, ShowDescriptors, ShowValue, ShowPercent, LegendAlignment, Accumulative, VScaleMin, VScaleMin, VScaleMax, VScaleMax, NumGrid, NumGrid, VScaleParams, DataOffset, DataOffset, DataTotal, DescriptorUpdate, ColorUpdate

 

//+------------------------------------------------------------------+
//|                                               PieChartSample.mq5 |
//|                   Copyright 2009-2017, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright   "2009-2017, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
#property description "Example of using pie chart"
//---
#include <Canvas\Charts\PieChart.mqh>
//+------------------------------------------------------------------+
//| inputs                                                           |
//+------------------------------------------------------------------+
input int      Width=600;
input int      Height=450;
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                    |
//+------------------------------------------------------------------+
int OnStart(void)
  {
//--- check
   if(Width<=0 || Height<=0)
     {
      Print("Too simple.");
      return(-1);
     }
//--- 차트 생성
   CPieChart pie_chart;
   if(!pie_chart.CreateBitmapLabel("PieChart",10,10,Width,Height))
     {
      Print("파이 차트 생성 오류: ",GetLastError());
      return(-1);
     }
   pie_chart.ShowPercent();
//--- 그리기
   for(uint i=0;i<30;i++)
     {
      pie_chart.ValueAdd(100*(i+1),"Item "+IntegerToString(i));
      Sleep(10);
     }
   Sleep(2000);
//--- 범례 없애기
   pie_chart.LegendAlignment(ALIGNMENT_LEFT);
   Sleep(2000);
//--- 범례 없애기
   pie_chart.LegendAlignment(ALIGNMENT_RIGHT);
   Sleep(2000);
//--- 범례 없애기
   pie_chart.LegendAlignment(ALIGNMENT_TOP);
   Sleep(2000);
//--- 범례 없애기
   pie_chart.ShowLegend(false);
   Sleep(2000);
//--- 백분율 없애기
   pie_chart.ShowPercent(false);
   Sleep(2000);
//--- 설명 없애기
   pie_chart.ShowDescriptors(false);
   Sleep(2000);
//--- 전체 표시
   pie_chart.ShowLegend();
   pie_chart.ShowValue();
   pie_chart.ShowDescriptors();
   Sleep(2000);
//--- 또는 이렇게
   pie_chart.ShowFlags(FLAG_SHOW_LEGEND|FLAG_SHOW_DESCRIPTORS|FLAG_SHOW_PERCENT);
   uint total=pie_chart.DataTotal();
//--- 값으로 플레이
   for(uint i=0;i<total && !IsStopped();i++)
     {
      pie_chart.ValueUpdate(i,100*(rand()%10+1));
      Sleep(1000);
     }
//--- 색상으로 플레이
   for(uint i=0;i<total && !IsStopped();i++)
     {
      pie_chart.ColorUpdate(i%total,RandomRGB());
      Sleep(1000);
     }
//--- 회전
   while(!IsStopped())
     {
      pie_chart.DataOffset(pie_chart.DataOffset()+1);
      Sleep(200);
     }
//--- 종료
   pie_chart.Destroy();
   return(0);
  }
//+------------------------------------------------------------------+
//| 랜덤 RGB 색상                                                 |
//+------------------------------------------------------------------+
uint RandomRGB(void)
  {
   return(XRGB(rand()%255,rand()%255,rand()%255));
  }