SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Infragistics NetAdvantageチュートリアル(AD)

Windows Phoneで高速チャートを使用しデータの視覚化を実現しよう

  • このエントリーをはてなブックマークに追加

XamDataChartコントロールの配置

 NetAdvantage for Windows Phoneにおいて、チャートコントロールはInfragistics.Controls.Charts.XamDataChartクラスで表されます。このクラスはSystem.Windows.Controls.Controlクラスから派生したSilverlightコントロールです。よって、他のコントロールやUIElementと同じようにSilverlightアプリケーションのデザインに組み込めます。

 XamDataChartコントロールをXAMLコードで記述するには、まずXML名前空間の宣言と同じ方法で、XamDataChartクラスが含まれるアセンブリ内のCLR名前空間に接頭辞を割り当てます。通常は、以下の行をXAMLコードのルート要素(phone:PhoneApplicationPage)に書き加える形となるでしょう。

XML名前空間
xmlns:ig="clr-namespace:Infragistics.Controls.Charts;assembly=InfragisticsWP7.Controls.Charts.XamDataChart.v11.1"

 これでXAMLコード内においてigという接頭辞からInfragistics.Controls.Charts名前空間にアクセスできます。接頭辞の名前は一意であれば任意です。

XamDataChartクラス(XAML)
<ig:XamDataChart Margin="20">
    //各種プロパティの設定...
</ig:XamDataChart>

 上のコードはXAML上でXamDataChartコントロールを宣言したものです。まだこの時点では、チャートの種類や関連付けるデータを指定していないため機能しません。XamDataChart要素の中に、デザインやデータとの関係を記述していきます。

軸の設定

 チャートを表示するには、水平方向(X座標)と垂直方向(Y座標)に沿って表示される軸を設定しなければなりません。軸はAxis抽象クラスによって表され、軸の種類ごとに派生クラスの実装が用意されています。生成した軸を設定するにはXamDataChartクラスのAxesプロパティから軸のコレクションを管理するAxisCollectionオブジェクトを取得し、これにAxisオブジェクトを追加します。

 チャートに設定する軸の種類は、後述するシリーズの種類によって制約があります。本稿では、最も標準的なチャートとなるカテゴリシリーズを中心にデザインするため、カテゴリシリーズで使用可能な軸を選択します。カテゴリシリーズで使用する軸は、主に数値を並べるNumericXAxisクラスとNumericYAxisクラスを使った配置となります。このほか、テキストラベルを並べるCategoryXAxis等が用いられます。

  • Axis - Control クラフから派生した軸を表す抽象クラス
    • NumericAxisBase - 数値軸を表す基底抽象クラス
      • NumericXAxis - 水平数値軸
      • NumericYAxis - 垂直数値軸
    • CategoryAxisBase - カテゴリベース軸の基底抽象クラス
      • CategoryXAxis - 水平カテゴリ軸

 一般的なチャートでは水平軸にCategoryXAxisクラスを用いて項目名や日付など非数値のテキスト情報を表示し、垂直軸にNumericYAxisを用いてデータの値を表示することになるでしょう。

 軸に表示される数値やテキストのスタイルはAxisクラスのLabelSettingsプロパティを通して設定できます。このプロパティに軸ラベルのスタイル情報を提供するAxisLabelSettingsクラスのオブジェクトを設定することで、ラベルの位置や色、フォントを変更できます。

 CategoryAxisBaseクラスでは、カテゴリとして表示するラベルのテキストに関連付けるためのコレクション(IEnumerable)をItemSourceプロパティに設定し、ラベルとして表示する書式文字列をLabelプロパティに設定します。これらの設定によって、対象のデータソースから動的に軸に表示する値をレイアウトしてくれます。Windows Phone 7では、マルチタッチのジェスチャーによるチャートの伸縮がビルドインで有効になっていますが、チャートの伸縮による軸の調整も自動的に行ってくれます。

CategoryXAxisクラス(XAML)
<ig:CategoryXAxis x:Name="xmXAxis" ItemsSource="{Binding}" Label="{}{DateTime:MM/dd}">
    <ig:CategoryXAxis.LabelSettings>
        <ig:AxisLabelSettings Foreground="White" Location="OutsideBottom" />
    </ig:CategoryXAxis.LabelSettings>
</ig:CategoryXAxis>

 この場では、先ほどDataContextプロパティに設定した配列にバインディングし、水平軸にDateTimeプロパティから得られる値で「月/日」という形で日付を並べるよう指定しています。

 同様に垂直軸にもNumericYAxisクラスを設定します。Y軸の値は後述するシリーズにバインディングされている値が割り当てられるため、特に設定するべき項目はありません。LabelSettingsプロパティから、ラベルの色などを調整する程度で良いでしょう。

NumericYAxisクラス(XAML)
<ig:NumericYAxis x:Name="xmYAxis">
    <ig:NumericYAxis.LabelSettings>
        <ig:AxisLabelSettings Foreground="Orange" Location="OutsideLeft" FontSize="20" />
    </ig:NumericYAxis.LabelSettings>
</ig:NumericYAxis>

 ここで宣言した軸は、後述するシリーズからバンディングされるため名前を付けておきます。

 チャートが持つAxesプロパティはコレクションなので、必要であれば任意の数の軸をチャートに追加することができます。例えば、水平軸の日付に重ねて、別の項目の値を並べることも可能です。

複数の水平軸
複数の水平軸

 データに応じて柔軟なチャートのレイアウトが可能です。

次のページ
シリーズ

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Infragistics NetAdvantageチュートリアル連載記事一覧

もっと読む

この記事の著者

赤坂 玲音(アカサカ レオン)

平成13年度「全国高校生・専門学校生プログラミングコンテスト 高校生プログラミングの部」にて最優秀賞を受賞。2005 年度~ Microsoft Most Variable Professional Visual Developer - Visual C++。プログラミング入門サイト WisdomSoft の管理人。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6033 2011/07/14 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング