Làm việc với Biểu đồ
Làm việc với Biểu đồ
Aspose.Words FOSS cho .NET có thể chèn biểu đồ Word gốc — cùng các biểu đồ DrawingML mà Word tự tạo — như một hình dạng trong lớp vẽ. DocumentBuilder.InsertChart tạo hình dạng và trả về nó; thuộc tính Chart của hình dạng cho phép truy cập series, trục, chú giải và định dạng. Hướng dẫn này bao gồm việc tạo biểu đồ, chọn loại biểu đồ, làm việc với series và điểm dữ liệu, trục và đường lưới, và định dạng các thành phần của biểu đồ.
Tạo biểu đồ
Gọi DocumentBuilder.InsertChart(chartType, width, height) để chèn một hình dạng biểu đồ tại con trỏ và nhận lại Shape chứa nó. Thuộc tính Chart của nó là đối tượng Chart mà bạn cấu hình. Một biểu đồ mới chèn sẽ đi kèm với series mẫu placeholder, vì vậy hãy xóa Chart.Series trước khi thêm dữ liệu thực bằng 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");Ví dụ này tạo một Document, sử dụng DocumentBuilder.InsertChart(ChartType.Line, 432, 252) để chèn một hình dạng biểu đồ đường, đọc shape.Chart để lấy đối tượng Chart, gọi chart.Series.Clear() để loại bỏ series placeholder, thêm một series thực bằng chart.Series.Add(seriesName, categories, values), và ghi kết quả bằng Document.Save.
Các loại biểu đồ
ChartType bao gồm các họ biểu đồ chuẩn của Word — Line, Bar, Column (cùng các biến thể Stacked, PercentStacked, và 3D), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface, và các loại biểu đồ mới của Word 2016 Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, và Waterfall. Gửi giá trị mong muốn làm đối số chartType cho InsertChart; không có cách nào để thay đổi loại biểu đồ đã tồn tại sau khi chèn ngoại trừ việc thay thế hình dạng.
Chuỗi và Điểm dữ liệu
Chart.Series là một ChartSeriesCollection của các đối tượng ChartSeries. Ngoài việc tải Add(seriesName, categories, values) được sử dụng ở trên, ChartSeriesCollection cũng có các overload cho các cặp giá trị X/Y, ngày tháng và kích thước bong bóng, cùng với Insert, Remove(index), và Clear(). Mỗi ChartSeries cung cấp DataPoints (một ChartDataPointCollection) để định dạng theo điểm — Format, Marker, Explosion, và InvertIfNegative — và HasDataLabels / DataLabels để bật và cấu hình một ChartDataLabelCollection (ShowValue, ShowCategoryName, ShowPercentage, Position).
Trục và Đường lưới
Chart.AxisX, AxisY, và AxisZ là các đối tượng ChartAxis (với Chart.Axes là một ChartAxisCollection để lặp qua tất cả chúng). Mỗi trục có HasMajorGridlines / HasMinorGridlines, MajorUnit / MinorUnit (với các cờ *IsAuto tương ứng), Crosses / CrossesAt, CategoryType, và một đối tượng TickLabels (AxisTickLabels) cho phông chữ và hướng nhãn. ChartAxis.Title (ChartAxisTitle) đặt văn bản chú thích trục thông qua các thuộc tính Text và Show của nó.
Chú giải, Tiêu đề và Bảng dữ liệu
Chart.Title (ChartTitle) đặt chú thích tổng thể cho biểu đồ — Text, Show, và Font. Chart.Legend (ChartLegend) kiểm soát việc có và vị trí xuất hiện của chú giải thông qua Position (một giá trị LegendPosition như Bottom, Right, hoặc Top) và cung cấp các LegendEntries riêng lẻ. Chart.DataTable (ChartDataTable) có thể hiển thị các giá trị chuỗi nền dưới dạng bảng dưới khu vực vẽ, với các tùy chọn Show, HasLegendKeys, và bật/tắt viền.
Định dạng các thành phần biểu đồ
Hầu hết các thành phần biểu đồ — chuỗi, điểm dữ liệu, trục, tiêu đề và chú giải — cung cấp một thuộc tính Format kiểu ChartFormat, mà lại cung cấp Fill và Stroke cho màu sắc của thành phần đó, cộng với một ShapeType (ChartShapeType) cho hình dạng dấu hiệu điểm dữ liệu. ChartFormat.SetDefaultFill() đặt lại một thành phần về giao diện mặc định dựa trên theme.
Mẹo và Thực hành tốt nhất
- Luôn xóa hoặc thay thế chuỗi placeholder (
chart.Series.Clear()) trước khi thêm dữ liệu thực — một biểu đồ mới chèn sẽ đi kèm với dữ liệu mẫu đã có sẵn. - Sử dụng các overload
ChartSeriesCollection.Addphù hợp với dạng dữ liệu của bạn (danh mục, cặp X/Y, ngày tháng, hoặc kích thước bong bóng) thay vì ép mọi thứ qua các cặp danh mục/giá trị. - Đặt
HasDataLabels = truecho một chuỗi trước khi cấu hình bộ sưu tậpDataLabelscủa nó — các thuộc tính hiển thị của bộ sưu tập không có hiệu lực nào khi nhãn bị tắt. - Đọc
Chart.ChartSpacehoặc kiểm traChartTypecụ thể trước khi dựa vào hành vi của lưới hoặc trục mà khác nhau giữa biểu đồ kiểu cổ điển và kiểu Word-2016. - Ưu tiên
ChartFormat.SetDefaultFill()hơn việc tự tay xóa mọi thuộc tính fill khi bạn muốn đặt lại giao diện của một phần tử.
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân | Khắc phục |
|---|---|---|
| Biểu đồ mới hiển thị dữ liệu demo không mong đợi | InsertChart khởi tạo biểu đồ với chuỗi dữ liệu thay thế | Gọi chart.Series.Clear() trước khi thêm chuỗi dữ liệu của bạn |
| Nhãn dữ liệu không xuất hiện | HasDataLabels chưa được đặt trên chuỗi trước khi cấu hình DataLabels | Đặt series.HasDataLabels = true, sau đó cấu hình ShowValue/ShowCategoryName trên series.DataLabels |
| Các đường lưới không hiển thị trên trục giá trị | HasMajorGridlines/HasMinorGridlines mặc định là false cho trục đó | Đặt chart.AxisY.HasMajorGridlines = true (và HasMinorGridlines nếu cần) |
| Chú giải không xuất hiện | Chart.Legend.Position được đặt thành LegendPosition.None | Đặt Position thành Bottom, Right, Top, Left, hoặc TopRight |
FAQ
Làm thế nào để chèn một biểu đồ vào tài liệu?
Gọi DocumentBuilder.InsertChart(chartType, width, height). Nó trả về Shape chứa; đọc thuộc tính Chart của nó để cấu hình biểu đồ.
Làm thế nào để thêm dữ liệu vào biểu đồ?
Xóa series placeholder bằng chart.Series.Clear(), sau đó gọi chart.Series.Add(seriesName, categories, values) (hoặc một trong các overload Add khác cho dữ liệu X/Y, ngày hoặc bubble).
Các loại biểu đồ nào có sẵn?
ChartType bao gồm các họ cổ điển (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, cộng với các biến thể xếp chồng và 3D của chúng) và các loại biểu đồ Word 2016 (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
Làm thế nào để thay đổi vị trí hiển thị của chú giải?
Đặt Chart.Legend.Position thành giá trị LegendPosition, chẳng hạn LegendPosition.Bottom hoặc LegendPosition.Right.
Tôi có thể định dạng một điểm dữ liệu riêng biệt khác với phần còn lại của chuỗi của nó không?
Có — truy cập vào ChartSeries.DataPoints (một ChartDataPointCollection) và đặt Format, Marker, hoặc Explosion của ChartDataPoint một cách độc lập với định dạng cấp chuỗi.
API Reference Tóm tắt
| Lớp/Phương thức | Mô tả |
|---|---|
DocumentBuilder.InsertChart | Chèn một hình biểu đồ tại con trỏ và trả về nó. |
Chart | Đối tượng cấu hình biểu đồ, được truy cập qua Shape.Chart. |
ChartType | Enum các loại biểu đồ có sẵn (line, bar, pie và các loại biểu đồ Word-2016). |
ChartSeriesCollection / ChartSeries | Series dữ liệu của biểu đồ và các phương thức để thêm, chèn hoặc xóa chúng. |
ChartDataPointCollection / ChartDataPoint | Định dạng từng điểm trong một series. |
ChartDataLabelCollection / ChartDataLabel | Nhãn giá trị/loại hiển thị trên các điểm biểu đồ. |
ChartAxis / ChartAxisCollection | Cấu hình trục — đường lưới, đơn vị, điểm giao, nhãn tick. |
ChartLegend / LegendPosition | Hiển thị và vị trí của chú giải. |
ChartTitle | Chú thích tổng thể của biểu đồ. |
ChartDataTable | Bảng tùy chọn các giá trị chuỗi được hiển thị phía dưới khu vực biểu đồ. |
ChartFormat | Định dạng tô, nét viền và hình dạng được chia sẻ bởi hầu hết các thành phần biểu đồ. |