CHistogramChart

히스토그램 플로팅하는 클래스.

설명

히스토그램의 플로팅으로 작업하는 모든 방법은 이 클래스에서 구현됩니다. 열 너비를 설정하고 데이터 시리즈로 작업을 구성하는 데 사용할 수 있습니다. 히스토그램 열의 그라데이션 채우기를 사용하여 데이터를 보다 명확하게 시각화 할 수 있는 방법이 포함되어 있습니다.

ccanvas_histogramchart

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

선언

   class CHistogramChart : public CChartCanvas

제목

   #include <Canvas\Charts\HistogramChart.mqh>

상속 계층

  CCanvas

      CChartCanvas

          CHistogramChart

클래스 메서드

메서드

액션

Gradient

히스토그램 열의 그라데이션 적용할지 여부를 나타내는 플래그를 설정.

BarGap

원점에서 히스토그램 오프셋 값을 설정합니다.

BarMinSize

히스토그램 열의 최소 너비를 설정.

BarBorder

각 열의 테두리를 그려야 함을 나타내는 플래그를 설정.

Create

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

SeriesAdd

새 데이터 시리즈를 추가.

SeriesInsert

차으에 데이터 시리즈를 삽입.

SeriesUpdate

차트의 데이터 시리즈를 업데이트.

SeriesDelete

차트에서 데이터 시리즈를 삭제.

ValueUpdate

지정된 시리즈의 요소 값을 업데이트.

DrawData

지정된 시리즈에 대한 히스토그램을 표시하는 가상 방법.

DrawBar

히스토그램 열을 채워진 Rectangle으로 그리기.

GradientBrush

그라데이션 채우기에 사용할 브러시 생성.                                    

클래스 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

//+------------------------------------------------------------------+
//|                                         HistogramChartSample.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 "히스토그램 사용 예시"
//---
#include <Canvas\Charts\HistogramChart.mqh>
//+------------------------------------------------------------------+
//| inputs                                                           |
//+------------------------------------------------------------------+
input bool Accumulative=true;
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                    |
//+------------------------------------------------------------------+
int OnStart(void)
  {
   int k=100;
   double arr[10];
//--- 차트 생성
   CHistogramChart chart;
   if(!chart.CreateBitmapLabel("SampleHistogramChart",10,10,600,450))
     {
      Print("Error creating histogram chart: ",GetLastError());
      return(-1);
     }
   if(Accumulative)
     {
      chart.Accumulative();
      chart.VScaleParams(20*k*10,-10*k*10,20);
     }
   else
      chart.VScaleParams(20*k,-10*k,20);
   chart.ShowValue(true);
   chart.ShowScaleTop(false);
   chart.ShowScaleBottom(false);
   chart.ShowScaleRight(false);
   chart.ShowLegend();
   for(int j=0;j<5;j++)
     {
      for(int i=0;i<10;i++)
        {
         k=-k;
         if(k>0)
            arr[i]=k*(i+10-j);
         else
            arr[i]=k*(i+10-j)/2;
        }
      chart.SeriesAdd(arr,"Item"+IntegerToString(j));
     }
//--- 값을 플레이
   while(!IsStopped())
     {
      int i=rand()%5;
      int j=rand()%10;
      k=rand()%3000-1000;
      chart.ValueUpdate(i,j,k);
      Sleep(200);
     }
//--- 종료
   chart.Destroy();
   return(0);
  }