.NET でチャートを操作する方法
このガイドでは、.NET向け Aspose.Words FOSS を使用して、ネイティブの Word チャートを挿入し、その外観を制御する方法を示します — 凡例と軸を非表示にし、値軸のスケールを固定し、次に別のチャートタイプを選択してデータラベルと個々のポイントをフォーマットします。.NET向け Aspose.Words FOSS は、NuGet から、またはソースからビルドすることで入手可能です。
ステップバイステップガイド
ステップ1: ライブラリを取得
リポジトリをクローンしてビルドする Aspose.Words.sln Release 構成でビルドし、その後プロジェクト参照を追加します Aspose.Words.csproj 独自の .NET プロジェクトから、以下に記載されているように インストールガイド.
ステップ2: チャートを挿入し、外観を簡素化する
DocumentBuilder.InsertChart(chartType, width, height) はカーソル位置にチャート シェイプを挿入し、含まれる Shape を返します。その Chart プロパティは設定対象の Chart オブジェクトで、主なサブオブジェクトとして AxisX、AxisY、Legend、Title が含まれます。チャート タイプはコア Aspose.Words 名前空間と並んで Aspose.Words.Drawing.Charts 名前空間に存在します。新しい Document 上の最小限でプレゼンテーション用に準備された ChartType.Bar チャートは、通常 Legend.Position を LegendPosition.None に設定し、AxisY と AxisX の上で Hidden と HasMajorGridlines を設定し、Title.Show を false にし、Series.Add(seriesName, categories, values) を呼び出す前に Series.Clear() でプレースホルダー ChartSeriesCollection をクリアし、AxisY.Scaling.Maximum を自動スケールさせず固定 AxisBound に固定し、最後に Document.Save で結果を書き出します。完全な例 — Document、DocumentBuilder、Chart、AxisX、AxisY、Legend、Title、ChartSeriesCollection、AxisBound、および Document.Save — は次のようになります:
using Aspose.Words;
using Aspose.Words.Drawing.Charts;
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Bar, 432, 252);
Chart chart = shape.Chart;
chart.Legend.Position = LegendPosition.None;
ChartSeriesCollection seriesColl = chart.Series;
chart.AxisY.Hidden = true;
chart.AxisY.HasMajorGridlines = false;
chart.AxisX.Hidden = true;
chart.Title.Show = false;
seriesColl.Clear();
chart.AxisY.Scaling.Maximum = new AxisBound(100);
string[] categories = new string[] { "AW Category 1" };
seriesColl.Add("AW Series 1", categories, new double[] { 30 });
doc.Save("chart.docx");これは Document を作成し、ChartType.Bar チャートを挿入し、凡例を非表示にするために Chart.Legend.Position を LegendPosition.None に設定し、chart.AxisY に Hidden = true と HasMajorGridlines = false を設定し、chart.AxisX に Hidden = true を設定し、chart.Title.Show = false を設定し、seriesColl.Clear() でプレースホルダー系列をクリアし、chart.AxisY.Scaling.Maximum = new AxisBound(100) を使用して 100 の最大値に値軸を固定し、seriesColl.Add(seriesName, categories, values) で実際の系列を 1 つ追加し、Document.Save で結果を書き出します。
ステップ 3: 別のチャート タイプを選択する
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 に渡します — 挿入後に既存のチャートのタイプを変更できるメンバーは存在しないため、事前に正しいものを選択するか、シェイプを置き換えてください。
ステップ 4: データ ラベルを追加して書式設定する
ラベルがオフの間は表示切替が見た目に影響しないため、series.DataLabels(ChartDataLabelCollection)を設定する前に series.HasDataLabels = true を設定します。ShowValue、ShowCategoryName、ShowPercentage が表示される情報の項目を制御し、Position がそれらをデータ ポイントに対して相対的に配置します。
ステップ 5: 個別データ ポイントの書式設定
シリーズの DataPoints(ChartDataPointCollection)にインデックスを付けて 1 つの ChartDataPoint に到達し、その Format、Marker、Explosion、または InvertIfNegative をシリーズ全体とは独立して設定します。これにより、シリーズ全体のスタイルを変更せずに単一のバー、スライス、またはマーカーを強調表示できます。
一般的な問題と対策
新しいチャートに予期しないデモデータが表示されます。 InsertChart プレースホルダーシリーズでチャートにシードを入れます。呼び出す chart.Series.Clear() 独自のシリーズを追加する前に。
Hiding AxisY グリッドラインを削除しません。 Hidden 軸のラインとラベルを非表示にします; グリッドラインは別のトグルです。設定 HasMajorGridlines = false (そして HasMinorGridlines = false マイナー グリッドラインも表示されている場合).
データ ラベルは設定後に表示されません ShowValue = true. HasDataLabels は最初にシリーズに設定されていませんでした。設定 series.HasDataLabels = true, 次に構成 series.DataLabels.
Scaling.Maximum は適用されないようです。 正しい軸オブジェクトに設定していることを確認してください(chart.AxisY ほとんどのチャートタイプの値軸に対して) かつ、以前のコードパスがリセットしないこと Scaling デフォルトに戻す AxisBound().
よくある質問
チャートの凡例を非表示にするにはどうすればよいですか?
chart.Legend.Position = LegendPosition.None を設定してください。
軸を自動スケーリングではなく、特定の範囲に固定するにはどうすればよいですか?
chart.AxisX.Scaling または chart.AxisY.Scaling に対して、AxisScaling.Minimum と/または AxisScaling.Maximum(両方とも AxisBound の値)を設定します。
チャートタイトルを削除せずに非表示にするにはどうすればよいですか?
chart.Title.Show = false を設定します。ChartTitle オブジェクトとその Text は残ります; 表示されるキャプションだけが抑制されます。
利用可能なチャートタイプはどれですか?
ChartType は、従来のファミリー(Line、Bar、Column、Pie、Area、Scatter、Bubble、Radar、Stock、Surface、スタックおよび3Dバリアントを含む)を、Word 2016 のタイプ(Treemap、Sunburst、Histogram、Pareto、BoxAndWhisker、Waterfall)と並べて一覧表示します。
シリーズ内の他のデータポイントと異なる形式で1つのデータポイントを設定できますか?
はい — ChartSeries.DataPoints をインデックス指定し、その ChartDataPoint の Format、Marker、または Explosion を個別に設定します。