Bekerja dengan Diagram
Bekerja dengan Diagram
Aspose.Words FOSS untuk .NET dapat menyisipkan diagram Word asli — diagram DrawingML yang sama yang dibuat oleh Word sendiri — sebagai bentuk pada lapisan gambar. DocumentBuilder.InsertChart membuat bentuk tersebut dan mengembalikannya; properti Chart dari bentuk tersebut menampilkan seri, sumbu, legenda, dan pemformatan. Panduan ini mencakup pembuatan diagram, memilih tipe diagram, bekerja dengan seri dan titik data, sumbu dan garis kisi, serta memformat elemen diagram.
Membuat Diagram
Panggil DocumentBuilder.InsertChart(chartType, width, height) untuk menyisipkan bentuk diagram pada kursor dan mendapatkan kembali Shape yang menampungnya. Properti Chart-nya adalah objek Chart yang Anda konfigurasikan. Diagram yang baru disisipkan dilengkapi dengan seri demo placeholder, jadi bersihkan Chart.Series sebelum menambahkan data nyata dengan ChartSeriesCollection.Add(seriesName, categories, values):
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");Contoh ini membangun sebuah Document, menggunakan DocumentBuilder.InsertChart(ChartType.Line, 432, 252) untuk menyisipkan bentuk diagram garis, membaca shape.Chart untuk mendapatkan objek Chart, memanggil chart.Series.Clear() untuk menghapus seri placeholder, menambahkan satu seri nyata dengan chart.Series.Add(seriesName, categories, values), dan menulis hasilnya dengan Document.Save.
Tipe Diagram
ChartType mencakup keluarga diagram standar Word — Line, Bar, Column (beserta varian Stacked, PercentStacked, dan 3D), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface, dan tipe diagram Word 2016 yang lebih baru Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, serta Waterfall. Berikan nilai yang diinginkan sebagai argumen chartType ke InsertChart; tidak ada cara untuk mengubah tipe diagram yang sudah ada setelah penyisipan kecuali dengan mengganti bentuknya.
Seri dan Titik Data
Chart.Series adalah ChartSeriesCollection dari objek ChartSeries. Selain overload Add(seriesName, categories, values) yang digunakan di atas, ChartSeriesCollection juga memiliki overload untuk pasangan nilai X/Y, tanggal, dan ukuran gelembung, serta Insert, Remove(index), dan Clear(). Setiap ChartSeries mengekspos DataPoints (sebuah ChartDataPointCollection) untuk format per-titik — Format, Marker, Explosion, dan InvertIfNegative — dan HasDataLabels / DataLabels untuk mengaktifkan dan mengonfigurasi ChartDataLabelCollection (ShowValue, ShowCategoryName, ShowPercentage, Position).
Sumbu dan Garis Kisi
Chart.AxisX, AxisY, dan AxisZ adalah objek ChartAxis (dengan Chart.Axes sebagai ChartAxisCollection untuk mengiterasi semua). Setiap sumbu memiliki HasMajorGridlines / HasMinorGridlines, MajorUnit / MinorUnit (dengan flag *IsAuto yang cocok), Crosses / CrossesAt, CategoryType, dan sebuah objek TickLabels (AxisTickLabels) untuk font label dan orientasi. ChartAxis.Title (ChartAxisTitle) mengatur teks caption sumbu melalui properti Text dan Show.
Legenda, Judul, dan Tabel Data
Chart.Title (ChartTitle) menetapkan caption keseluruhan grafik — Text, Show, dan Font. Chart.Legend (ChartLegend) mengontrol apakah dan di mana legenda muncul melalui Position (nilai LegendPosition seperti Bottom, Right, atau Top) dan mengekspos LegendEntries secara individual. Chart.DataTable (ChartDataTable) dapat menampilkan nilai seri dasar sebagai tabel di bawah area plot, dengan Show, HasLegendKeys, dan saklar border.
Memformat Elemen Grafik
Sebagian besar elemen grafik — seri, titik data, sumbu, judul, dan legenda — mengekspos properti Format dengan tipe ChartFormat, yang pada gilirannya mengekspos Fill dan Stroke untuk warna elemen tersebut, serta ShapeType (ChartShapeType) untuk bentuk penanda titik data. ChartFormat.SetDefaultFill() mengembalikan elemen ke tampilan default yang diatur oleh tema.
Tips dan Praktik Terbaik
- Selalu bersihkan atau ganti seri placeholder (
chart.Series.Clear()) sebelum menambahkan data nyata — diagram yang baru disisipkan sudah dilengkapi dengan data contoh. - Gunakan overload
ChartSeriesCollection.Addyang cocok dengan bentuk data Anda (kategori, pasangan X/Y, tanggal, atau ukuran gelembung) alih-alih memaksa semuanya melalui pasangan kategori/nilai. - Atur
HasDataLabels = truepada sebuah seri sebelum mengonfigurasi koleksiDataLabels-nya — properti tampilan koleksi tidak berpengaruh terlihat saat label dimatikan. - Baca
Chart.ChartSpaceatau periksaChartTypespesifik sebelum mengandalkan perilaku garis kisi atau sumbu yang berbeda antara diagram klasik dan bergaya Word-2016. - Lebih pilih
ChartFormat.SetDefaultFill()daripada membersihkan secara manual setiap properti isi ketika Anda ingin mengatur ulang tampilan elemen.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
| Bagan baru menampilkan data demo yang tidak diharapkan | InsertChart mengisi bagan dengan seri placeholder | Panggil chart.Series.Clear() sebelum menambahkan seri Anda sendiri |
| Label data tidak muncul | HasDataLabels tidak diatur pada seri sebelum mengonfigurasi DataLabels | Atur series.HasDataLabels = true, lalu konfigurasikan ShowValue/ShowCategoryName pada series.DataLabels |
| Garis kisi tidak muncul pada sumbu nilai | HasMajorGridlines/HasMinorGridlines secara default ke false untuk sumbu tersebut | Setel chart.AxisY.HasMajorGridlines = true (dan HasMinorGridlines jika diperlukan) |
| Legenda tidak muncul | Chart.Legend.Position diatur ke LegendPosition.None | Atur Position ke Bottom, Right, Top, Left, atau TopRight |
FAQ
Bagaimana cara menyisipkan chart ke dalam dokumen?
Panggil DocumentBuilder.InsertChart(chartType, width, height). Itu mengembalikan Shape yang berisi; baca properti Chartnya untuk mengonfigurasi chart.
Bagaimana cara menambahkan data ke chart?
Bersihkan seri placeholder dengan chart.Series.Clear(), lalu panggil chart.Series.Add(seriesName, categories, values) (atau salah satu overload Add lainnya untuk data X/Y, tanggal, atau gelembung).
Tipe chart apa yang tersedia?
ChartType mencakup keluarga klasik (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, serta varian stacked dan 3D mereka) dan tipe chart Word 2016 (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
Bagaimana cara mengubah posisi legenda?
Setel Chart.Legend.Position ke nilai LegendPosition, seperti LegendPosition.Bottom atau LegendPosition.Right.
Apakah saya dapat memformat satu titik data secara berbeda dari sisanya dalam serinya?
Ya — indeks ke ChartSeries.DataPoints (sebuah ChartDataPointCollection) dan atur Format, Marker, atau Explosion milik ChartDataPoint secara independen dari pemformatan tingkat seri.
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
DocumentBuilder.InsertChart | Menyisipkan bentuk diagram pada kursor dan mengembalikannya. |
Chart | Objek konfigurasi diagram, yang diakses melalui Shape.Chart. |
ChartType | Enum tipe chart yang tersedia (line, bar, pie, dan tipe chart Word-2016). |
ChartSeriesCollection / ChartSeries | Seri data chart dan metode untuk menambah, menyisipkan, atau menghapusnya. |
ChartDataPointCollection / ChartDataPoint | Pemformatan per-titik dalam sebuah seri. |
ChartDataLabelCollection / ChartDataLabel | Label nilai/kategori yang ditampilkan pada titik-titik chart. |
ChartAxis / ChartAxisCollection | Konfigurasi sumbu — garis kisi, satuan, titik pertemuan, label tanda. |
ChartLegend / LegendPosition | Visibilitas dan penempatan legenda. |
ChartTitle | Keterangan keseluruhan diagram. |
ChartDataTable | Tabel opsional nilai seri yang ditampilkan di bawah area plot. |
ChartFormat | Pengisian, garis, dan pemformatan bentuk yang dibagikan oleh sebagian besar elemen bagan. |