チャートの操作
チャートの操作
Aspose.Words FOSS for .NET は、ネイティブな Word チャート(Word 自体が作成する DrawingML チャートと同じもの)を描画レイヤーのシェイプとして挿入できます。DocumentBuilder.InsertChart はシェイプを作成して返します;シェイプの Chart プロパティは、系列、軸、凡例、書式設定を公開します。本ガイドでは、チャートの作成、チャートタイプの選択、系列およびデータ ポイントの操作、軸とグリッドライン、そしてチャート要素の書式設定について説明します。
チャートの作成
カーソル位置にチャート シェイプを挿入し、包含される Shape を取得するには、DocumentBuilder.InsertChart(chartType, width, height) を呼び出します。その Chart プロパティは、設定する Chart オブジェクトです。新しく挿入されたチャートにはプレースホルダーのデモ系列が含まれているので、ChartSeriesCollection.Add(seriesName, categories, values) で実データを追加する前に Chart.Series をクリアしてください:
using Aspose.Words;
using Aspose.Words.Drawing.Charts;
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
// Delete default generated series.
chart.Series.Clear();
string[] categories = new string[] { "AW Category 1", "AW Category 2", "AW Category 3" };
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
doc.Save("chart.docx");この例では、Document を構築し、DocumentBuilder.InsertChart(ChartType.Line, 432, 252) を使用して折れ線グラフ シェイプを挿入し、shape.Chart を読み取って Chart オブジェクトを取得し、chart.Series.Clear() を呼び出してプレースホルダー系列を削除し、chart.Series.Add(seriesName, categories, values) で実際の系列を1つ追加し、Document.Save で結果を書き出します。
チャートの種類
ChartType は標準的な Word チャート ファミリーをカバーします — Line、Bar、Column(それらの Stacked、PercentStacked、3D バリアントを含む)、Pie、PieOfPie、Doughnut、Area、Scatter、Bubble、Radar、Stock、Surface、および新しい Word 2016 のチャート タイプ Treemap、Sunburst、Histogram、Pareto、BoxAndWhisker、Waterfall を含みます。目的の値を chartType 引数として InsertChart に渡してください;挿入後に既存のチャートのタイプを変更する方法は、シェイプを置き換える以外にありません。
シリーズとデータポイント
Chart.Series は ChartSeries オブジェクトの ChartSeriesCollection です。上記で使用した Add(seriesName, categories, values) のオーバーロードに加えて、ChartSeriesCollection には X/Y 値ペア、日付、バブルサイズ用のオーバーロードがあり、さらに Insert、Remove(index)、Clear() が用意されています。各 ChartSeries は、ポイントごとの書式設定用の DataPoints(ChartDataPointCollection)を公開します — Format、Marker、Explosion、InvertIfNegative — そして HasDataLabels / DataLabels によって ChartDataLabelCollection(ShowValue、ShowCategoryName、ShowPercentage、Position)を有効化および設定できます。
軸とグリッドライン
Chart.AxisX、AxisY、および AxisZ は ChartAxis オブジェクトです(Chart.Axes はそれらすべてを反復処理するための ChartAxisCollection として機能します)。各軸は HasMajorGridlines / HasMinorGridlines、MajorUnit / MinorUnit(対応する *IsAuto フラグ付き)、Crosses / CrossesAt、CategoryType、そしてラベルのフォントと向き用の TickLabels オブジェクト(AxisTickLabels)を持ちます。ChartAxis.Title(ChartAxisTitle)は、その Text と Show プロパティを通じて軸キャプションテキストを設定します。
凡例、タイトル、データテーブル
Chart.Title(ChartTitle)はチャート全体のキャプションを設定します — Text、Show、および Font。Chart.Legend(ChartLegend)は、Position(LegendPosition の値で、Bottom、Right、または Top など)を通じて凡例の表示有無と位置を制御し、個別の LegendEntries を公開します。Chart.DataTable(ChartDataTable)は、プロット領域下部に基礎となるシリーズ値をテーブルとして表示でき、Show、HasLegendKeys、およびボーダートグルを備えています。
チャート要素の書式設定
ほとんどのチャート要素 — シリーズ、データポイント、軸、タイトル、そして凡例 — は、タイプ ChartFormat の Format プロパティを公開し、これによりその要素の色用の Fill と Stroke が取得でき、さらにデータポイントのマーカー形状用の ShapeType(ChartShapeType)が提供されます。ChartFormat.SetDefaultFill() は要素をテーマベースのデフォルト外観にリセットします。
ヒントとベストプラクティス
- 実データを追加する前に、プレースホルダー系列(
chart.Series.Clear())を必ずクリアまたは置き換えてください — 新しく挿入したチャートにはサンプルデータがすでに含まれています。 - データ形状(カテゴリ、X/Y ペア、日付、またはバブルサイズ)に合った
ChartSeriesCollection.Addのオーバーロードを使用し、すべてをカテゴリ/値ペアに強制的に入れるのは避けてください。 - 系列に
HasDataLabels = trueを設定してから、そのDataLabelsコレクションを構成してください — ラベルがオフになっている間、コレクションの表示プロパティは目に見える効果がありません。 - クラシック形式と Word-2016 スタイルのチャートで異なるグリッド線や軸の動作に依存する前に、
Chart.ChartSpaceを読むか、特定のChartTypeを確認してください。 - 要素の外観をリセットしたい場合は、すべての塗りつぶしプロパティを手動でクリアするよりも
ChartFormat.SetDefaultFill()を使用する方が望ましいです。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
| 新しいチャートが予期しないデモデータを表示します | InsertChart がプレースホルダーシリーズでチャートをシードします | 独自のシリーズを追加する前に chart.Series.Clear() を呼び出してください |
| データラベルが表示されません | HasDataLabels が DataLabels を構成する前に、シリーズに設定されていませんでした | series.HasDataLabels = true を設定し、series.DataLabels 上の ShowValue/ShowCategoryName を構成します。 |
| 値軸にグリッドラインが表示されません。 | HasMajorGridlines/HasMinorGridlines はその軸のデフォルトで false です。 | 設定 chart.AxisY.HasMajorGridlines = true(必要に応じて HasMinorGridlines) |
| 凡例が表示されません。 | Chart.Legend.Position は LegendPosition.None に設定されています。 | Position を Bottom、Right、Top、Left、または TopRight に設定します。 |
FAQ
ドキュメントにチャートを挿入するにはどうすればよいですか?
DocumentBuilder.InsertChart(chartType, width, height) を呼び出します。これにより、包含する Shape が返されます。その Chart プロパティを読み取ってチャートを構成します。
チャートにデータを追加するにはどうすればよいですか?
chart.Series.Clear() でプレースホルダー系列をクリアし、次に chart.Series.Add(seriesName, categories, values) を呼び出します(または X/Y、日付、バブル データ用の他の Add オーバーロードのいずれか)。
利用可能なチャートタイプはどれですか?
ChartType には、クラシック系(Line、Bar、Column、Pie、Area、Scatter、Bubble、Radar、Stock、Surface、およびそれらの積み上げ型と 3D バリアント)と、Word 2016 のチャートタイプ(Treemap、Sunburst、Histogram、Pareto、BoxAndWhisker、Waterfall)が含まれます。
凡例の表示位置を変更するにはどうすればよいですか?
Chart.Legend.Position を LegendPosition の値に設定します。例えば LegendPosition.Bottom や LegendPosition.Right です。
個別のデータポイントを、その系列の他のポイントとは異なる形式で設定できますか?
はい — ChartSeries.DataPoints(ChartDataPointCollection)にインデックスし、その ChartDataPoint の Format、Marker、または Explosion を、系列レベルの書式設定とは独立して設定します。
API Reference の概要
| クラス/メソッド | 説明 |
|---|---|
DocumentBuilder.InsertChart | カーソルにチャート シェイプを挿入し、返します。 |
Chart | チャート構成オブジェクト、Shape.Chart を介して取得できます。 |
ChartType | 利用可能なチャートタイプの列挙(line、bar、pie、Word-2016 のチャートタイプ)。 |
ChartSeriesCollection / ChartSeries | チャートのデータ系列と、それらを追加、挿入、または削除するメソッド。 |
ChartDataPointCollection / ChartDataPoint | シリーズ内のポイントごとの書式設定。 |
ChartDataLabelCollection / ChartDataLabel | チャートポイントに表示される値/カテゴリ ラベル。 |
ChartAxis / ChartAxisCollection | 軸の設定 — グリッドライン、単位、交差点、目盛ラベル。 |
ChartLegend / LegendPosition | 凡例の表示可否と配置。 |
ChartTitle | チャート全体のキャプション。 |
ChartDataTable | プロット領域の下に表示される、シリーズ値のオプションテーブル。 |
ChartFormat | ほとんどのチャート要素で共有される、塗り、ストローク、形状の書式設定。 |