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

ヒストグラムの列を塗りつぶされた矩形として描画します。

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 "Example of using histogram"
//---
#include <Canvas\Charts\HistogramChart.mqh>
//+------------------------------------------------------------------+
//| inputs                                                           |
//+------------------------------------------------------------------+
input bool Accumulative=true;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
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));
    }
//--- play with values
  while(!IsStopped())
    {
    int i=rand()%5;
    int j=rand()%10;
     k=rand()%3000-1000;
     chart.ValueUpdate(i,j,k);
    Sleep(200);
    }
//--- finish
  chart.Destroy();
  return(0);
 }