FAQ
パイチャート レンダラーでの表示

ナレッジ番号:5273 | 登録日:2023/07/26 | 更新日:2023/12/28

概要

このサンプル コードは、パイチャートのレンダラーを作成する方法を示しています。

サンプル コード

パイチャート レンダラーの作成

以下のサンプル コードでは、"male" と "female" フィールドを利用して固定サイズ(フィールドの合計値でパイの大きさを変化させない)のパイチャート レンダラーを作成しています。レンダリングの対象となるレイヤーはマップの最上位にあるものとします。

protected override void OnClick()
{
    IMap pMap = ArcMap.Document.FocusMap;
    IFeatureLayer pFeatureLayer = pMap.get_Layer(0) as IFeatureLayer;
    SetPiechartrenderer(pFeatureLayer as IGeoFeatureLayer);
}

public void SetPiechartrenderer(IGeoFeatureLayer pGeoFeatureLayer)
{
    //レンダラーを作成する。
    IPieChartRenderer pPieChartRenderer = new ChartRendererClass();

    //塗りつぶしシンボルを作成する。
    ISimpleFillSymbol pSimpleFillSymbol  = new SimpleFillSymbolClass();
    ISimpleFillSymbol pSimpleFillSymbol2 =  new SimpleFillSymbolClass();

    //塗りつぶしシンボルの色を作成する。
    IRgbColor pRGBColor =  new RgbColorClass();
    pRGBColor.Red = 225;
    pRGBColor.Green = 84;
    pRGBColor.Blue = 130;

    //塗りつぶしシンボルに色を適用する
    pSimpleFillSymbol.Color = pRGBColor;
    pRGBColor.Red = 0;
    pSimpleFillSymbol2.Color = pRGBColor;

    //塗りつぶしスタイルは、同一色による均一な塗りつぶし
    pSimpleFillSymbol2.Style = esriSimpleFillStyle.esriSFSSolid;

    //境界線の幅を指定するために、境界線のライン シンボルを取得する
    ISimpleLineSymbol pLinesymbol = pSimpleFillSymbol.Outline as ISimpleLineSymbol;
    //境界線のライン シンボルの幅を指定する
    pLinesymbol.Width = 0.5;
    //幅を変更したライン シンボルを、境界線のライン シンボルとして設定する
    pSimpleFillSymbol.Outline = pLinesymbol;
    pSimpleFillSymbol2.Outline = pLinesymbol;

    //レンダラーに作成したシンボルを適用する
    IChartRenderer pChartRenderer = PieChartRenderer as IChartRenderer;
    IChartSymbol pChartSymbol =  new PieChartSymbolClass();
    IPieChartRenderer pPieChartRenderer2 = pChartRenderer as IPieChartRenderer;

    pChartRenderer.ChartSymbol = pcharsym;
    pChartRenderer.UseOverposter = true;

    //チャートをオーバーラップさせないにチェックを入れる。
    //pChartRenderer.UseOverposter = false

    //チャートをオーバーラップさせないのチェックをはずす。
    pPieChartRenderer2.ProportionalBySum = false;

    IRendererFields pRendererFields = pchartren as IRendererFields;
    pRendererFields.AddField("male");
    pRendererFields.AddField("female");

    ISymbolArray pSymbolArray = pcharsym  as ISymbolArray;
    pSymbolArray.AddSymbol(pSimpleFillSymbol as ISymbol);
    pSymbolArray.AddSymbol(pSimpleFillSymbol2 as ISymbol);
    pChartRenderer.CreateLegend();

    //レイヤー(GeoFeatureLayer)にレンダラー(SimpleRenderer)を適用する
    pGeoFeatureLayer.Renderer = pPieChartRenderer as IFeatureRenderer;

    (ArcMap.Document as IMxDocument).UpdateContents();
    (ArcMap.Document.FocusMap as  IActiveView).Refresh();
}

Protected Overrides Sub OnClick()
    Dim pMapAs IMap = My.ArcMap.Document.FocusMap
    Dim pFeatureLayer As IFeatureLayer = pMap.Layer(0)
    SetPiechartrenderer(pFeatureLayer)
End Sub

Shared Sub SetPiechartrenderer(ByVal pGeoFeatureLayer As IGeoFeatureLayer)
    'レンダラーを作成する。
    Dim pPieChartRenderer As IPieChartRenderer = New ChartRendererClass

    '塗りつぶしシンボルを作成する。
    Dim pSimpleFillSymbol As ISimpleFillSymbol = New SimpleFillSymbolClass()
    Dim pSimpleFillSymbol2 As ISimpleFillSymbol = New SimpleFillSymbolClass()
    'Dim pSimpleFillSymbol3 As ISimpleFillSymbol = New SimpleFillSymbolClass()

    '塗りつぶしシンボルの色を作成する。
    Dim pRGBColor As IRgbColor = New RgbColorClass()
    pRGBColor.Red = 225
    pRGBColor.Green = 84
    pRGBColor.Blue = 30

    '塗りつぶしシンボルに色を適用する
    pSimpleFillSymbol.Color = pRGBColor
    pRGBColor.Red = 0
    pSimpleFillSymbol2.Color = pRGBColor
    pRGBColor.Red = 100

    '塗りつぶしスタイルは、同一色による均一な塗りつぶし
    pSimpleFillSymbol2.Style = esriSimpleFillStyle.esriSFSSolid

    '境界線の幅を指定するために、境界線のライン シンボルを取得する
    Dim pLinesymbol As ISimpleLineSymbol = pSimpleFillSymbol.Outline
    '境界線のライン シンボルの幅を指定する
    pLinesymbol.Width = 0.5
    '幅を変更したライン シンボルを、境界線のライン シンボルとして設定する
    pSimpleFillSymbol.Outline = pLinesymbol
    pSimpleFillSymbol2.Outline = pLinesymbol

    'レンダラーに作成したシンボルを適用する
    Dim pChartRenderer As IChartRenderer = CType(pPieChartRenderer, IChartRenderer)
    Dim pChartSymbol As IChartSymbol = New PieChartSymbol
    Dim pPieChartRenderer2 As IPieChartRenderer = pChartRenderer 

    pChartRenderer.ChartSymbol = pChartSymbol 
    pChartRenderer.UseOverposter = True

    'チャートをオーバーラップさせないにチェックを入れる。
    'pChartRenderer.UseOverposter = False

    'チャートをオーバーラップさせないのチェックをはずす場合。
    pChartRenderer.ProportionalBySum = False

    Dim pRendererFields As IRendererFields = pChartRenderer 
    pRendererFields.AddField("male")
    pRendererFields.AddField("female")

    Dim pSymbolArray As ISymbolArray = pChartSymbol
    pSymbolArray.AddSymbol(pSimpleFillSymbol)
    pSymbolArray.AddSymbol(pSimpleFillSymbol2)
    pChartRenderer.CreateLegend()

    'レイヤー(GeoFeatureLayer)にレンダラー(SimpleRenderer)を適用する
    pGeoFeatureLayer.Renderer = pPieChartRenderer

    CType(My.ArcMap.Document, IMxDocument).UpdateContents()
    CType(My.ArcMap.Document.FocusMap, IActiveView).Refresh()
End Sub

メタデータ

種類

製品