GrapeCity ActiveReports for .NET 14.0J
グラフ(チャート)
ActiveReportsユーザーガイド > よくある質問 > セクションレポート > グラフ(チャート)

グラフ軸の目盛間隔や最大値/最小値を設定する

グラフ軸(Axis)の SmartLabelsプロパティ「True」(デフォルト)に設定されている場合、軸の目盛間隔、最大値/最小値は、コントロールが自動的に設定します。任意の値を設定する場合は、SmartLabelsプロパティを「False」に設定した上で、軸の各プロパティを変更する必要があります。

SmartLabelsプロパティは、グラフデザイナから変更するか、コードから設定します。以下は、SmartLabelsプロパティをFalseにして軸の書式を設定するコードの一例です。

Visual Basic

Visual Basicコード
コードのコピー
' スマートラベルを無効にします。
Me.ChartControl1.ChartAreas(0).Axes("AxisY").SmartLabels = False
' 軸の最大値・最小値、主目盛の間隔を設定します。
Me.ChartControl.ChartAreas(0).Axes("AxisY").Max = 300
Me.ChartControl.ChartAreas(0).Axes("AxisY").Min = 0
Me.ChartControl.ChartAreas(0).Axes("AxisY").MajorTick.Step = 500

C#

C#コード
コードのコピー
// スマートラベルを無効にします。
this.chartControl1.ChartAreas[0].Axes["AxisY"].SmartLabels = false;
// 軸の最大値・最小値、主目盛の間隔を設定します。
this.chartControl1.ChartAreas[0].Axes["AxisY"].Max = 3000;
this.chartControl1.ChartAreas[0].Axes["AxisY"].Min = 0;
this.chartControl1.ChartAreas[0].Axes["AxisY"].MajorTick.Step = 500;

X軸・Y軸をグラフの中央に寄せる

X軸の位置を移動する

デフォルトの設定では、グラフのY軸の表す範囲はデータ点のY値から決定されます。 Y軸の最小値はデータの最小値より小さい値となります。

データ点にマイナスの値が含まれている場合、 ケースによっては、0を基準にしてX軸をグラフの中央に移動させる必要があります。これはX軸(AxisX)のPositionプロパティを「0」に設定することで実現可能です。

グラフデザイナから設定する
  1. グラフデザイナ画面を開き、左側の「グラフエリア」から、[軸]−[AxisX]を選択します。
  2. 「軸の書式設定 全般」タブの中の「位置」の要素を「Default」から「0」に変更します。
プロパティウィンドウから設定する
  1. ChartAreasプロパティから、ChartAreaコレクションエディタを表示します。
  2. AxesプロパティからAxisBaseコレクションエディタを表示します。
  3. AxisXを選択します
  4. Positionプロパティを「0」に設定します。

Y軸の位置を移動する

Y軸の位置も、同様にAxisYのPositionプロパティを設定することによって変更が可能です。 X軸がカテゴリ軸の場合、Positionプロパティを1.0変更すると、Y軸の位置が要素1個分だけ左右に移動します。以下のグラフでは、AxisYのPositionプロパティを「9」に設定しています。

X軸とY軸を入れ換える

Chartコントロールのプロパティから、ChartAreaのSwapAxesDirection プロパティをTrueに設定することで、X軸とY軸を入れ換えることが可能です。

これは、棒グラフや、2D円グラフなどで有効です。ただし、3D円グラフでこのプロパティをTrueにした場合、マーカーの位置が不正になる問題が確認されています。3D円グラフの場合は、下記の「項目の表示順序を逆順にする」の「クエリによって逆順にする方法」を検討してください。

項目の表示順序を逆順にする

クエリによって逆順にする
グラフデータソースのクエリによって逆順に並べ替える方法があります。
たとえば、データの並び順を規定する項目(整数値)をフィールド"ID" とした場合、以下のようなクエリ文字列(SQL)になります。

Select * from GraphDataTable order by ID desc

円グラフを時計回りにする
グラフのカスタムプロパティClockwiseの値を「True」に設定すると、円グラフの回転方向が時計回りになります。

グラフデザイナから設定する方法

  1. グラフデザイナ画面を開き、左側の「系列」を選択します。
  2. 「全般」タブの中の[プロパティ]ボタンをクリックします。
  3. Clockwiseの値を「True」に設定します。
プロパティウィンドウから設定する方法
  1. Seriesプロパティから、Seriesコレクションエディタを表示します。
  2. 特定のSeriesに対して、Propertiesプロパティを展開します。
  3. Clockwiseプロパティを「True」に設定します。

コードから設定する方法

Visual Basic

Visual Basicコード
コードのコピー
' 円グラフの回転方向を時計回りに設定します。
Me.ChartControl1.Series(0).Properties("Clockwise") = True

C#

C#コード
コードのコピー
// 円グラフの回転方向を時計回りに設定します。
this.chartControl1.Series[0].Properties["Clockwise"] = true;

系列・データ点の色を変更する

Chartコントロールは、系列内のデータの色を自動的に設定できるいくつかの定義済みのカラーパレットを備えています。

カラーパレットを使用した場合の系列の色の変化は、ColorPalette 列挙体の値によって定まっております。これは8色のセットであり、9項目以降の色は繰り返しになる仕様となっております。各系列の色を任意の色に設定するには、BackdropItemオブジェクトに色を設定し、各Seriesに追加する方法が考えられます。

コード上で設定する場合には、以下のような処理を、Chartコントロールが配置されているセクションの BeforePrintイベントに実装します。

Visual Basic

Visual Basicコード
コードのコピー
For i As Integer = 0 To Me.ChartControl1.Series.Count - 1
    ' 背景を設定するオブジェクトです。
    Dim bItem As New GrapeCity.ActiveReports.Chart.BackdropItem
    ' 色を指定します。
' グラデーションをつける処理の例です。
bItem.Color = System.Drawing.Color.FromArgb(0, 255 - ((i * 32) Mod 256), 255 - ((i * 32) Mod 256)) Me.ChartControl1.Series(i).Backdrop = bItem Next

C#

C#コード
コードのコピー
int i = 0; 
foreach(GrapeCity.ActiveReports.Chart.Series p in this.chartControl1.Series) 
{ 
    i++; 
    // 背景を設定するオブジェクトです。 
    GrapeCity.ActiveReports.Chart.BackdropItem bItem = new GrapeCity.ActiveReports.Chart.BackdropItem(); 
    // 色を指定します。
// グラデーションをつける処理の例です。
bItem.Color = System.Drawing.Color.FromArgb(0, 255 - ((i * 32) % 256), 255 - ((i * 32) % 256)); p.Backdrop = bItem; }

なお、デザイン画面から1系列ずつ手作業で設定する場合には、以下のような手順になります。

  1. Chartコントロールのプロパティウィンドウから、Seriesプロパティを選択し、コレクションエディタを開きます。
  2. 色を変更したい系列(メンバ)を選択します。
  3. Propertiesプロパティを開きます。
  4. Backdropプロパティを(null)から(Default)に変更します。
  5. Backdropプロパティを開きます。
  6. Colorプロパティを任意の色に変更します。

また、円グラフなどの場合、色を設定した BackdropItemオブジェクトを Series ではなく、DataPoint に対して設定します。以下のコードをご参照ください。

Visual Basic

Visual Basicコード
コードのコピー
For i As Integer = 0 To _ 
Me.ChartControl1.Series(0).Points.Count - 1 
        ' 背景を設定するオブジェクトです。
        Dim bItem As New GrapeCity.ActiveReports.Chart.BackdropItem 
        ' 色を指定します。
     ' グラデーションをつける処理の例です。
bItem.Color = System.Drawing.Color.FromArgb(0, 255 -((i * 32) Mod 256), 255 - ((i * 32) Mod 256)) ' DataPointに背景を設定します。 Me.ChartControl1.Series(0).Points(i).Backdrop = bItem Next

C#

C#コード
コードのコピー
for (int i = 0; i <= this.chartControl1.Series[0].Points.Count - 1; i++)
{
   // 背景を設定するオブジェクトです。
   GrapeCity.ActiveReports.Chart.BackdropItem bItem = new GrapeCity.ActiveReports.Chart.BackdropItem();
   // 色を指定します。
   // グラデーションをつける処理の例です。
   bItem.Color = System.Drawing.Color.FromArgb(0, 255 - ((i * 32) % 256), 255 - ((i * 32) % 256));
   // DataPointに背景を設定します。
   this.chartControl1.Series[0].Points[i].Backdrop = bItem;
}
関連トピック