Cách làm việc với biểu đồ trong .NET
Hướng dẫn này chỉ cách chèn biểu đồ Word gốc và kiểm soát giao diện của nó bằng Aspose.Words FOSS cho .NET — ẩn chú giải và các trục, cố định thang đo trục giá trị, sau đó chọn loại biểu đồ khác và định dạng nhãn dữ liệu cũng như các điểm riêng lẻ. Aspose.Words FOSS cho .NET có sẵn thông qua NuGet hoặc bằng cách biên dịch từ mã nguồn.
Hướng dẫn từng bước
Bước 1: Lấy thư viện
Sao chép kho lưu trữ và xây dựng Aspose.Words.sln trong cấu hình Release, sau đó thêm tham chiếu dự án tới Aspose.Words.csproj từ dự án .NET của bạn, như đã mô tả trong hướng dẫn Cài đặt.
Bước 2: Chèn biểu đồ và đơn giản hoá giao diện của nó
DocumentBuilder.InsertChart(chartType, width, height) chèn một hình dạng biểu đồ tại vị trí con trỏ và trả về Shape chứa nó; thuộc tính Chart của nó là đối tượng Chart mà bạn cấu hình, với AxisX, AxisY, Legend và Title là các đối tượng con chính của nó. Các loại biểu đồ nằm trong không gian tên Aspose.Words.Drawing.Charts cùng với không gian tên lõi Aspose.Words. Một biểu đồ ChartType.Bar tối thiểu, sẵn sàng cho trình chiếu trên một Document mới thường đòi hỏi việc đặt Legend.Position thành LegendPosition.None, thiết lập Hidden và HasMajorGridlines trên AxisY và AxisX, đặt Title.Show thành false, xóa placeholder ChartSeriesCollection bằng Series.Clear() trước khi gọi Series.Add(seriesName, categories, values), cố định AxisY.Scaling.Maximum vào một AxisBound cố định thay vì để nó tự động mở rộng, sau đó ghi kết quả bằng Document.Save. Ví dụ đầy đủ — Document, DocumentBuilder, Chart, AxisX, AxisY, Legend, Title, ChartSeriesCollection, AxisBound, và Document.Save — trông như sau:
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");Điều này tạo một Document, chèn một biểu đồ ChartType.Bar, đặt Chart.Legend.Position thành LegendPosition.None để ẩn chú giải, đặt Hidden = true và HasMajorGridlines = false trên chart.AxisY và Hidden = true trên chart.AxisX, đặt chart.Title.Show = false, xóa series placeholder bằng seriesColl.Clear(), cố định trục giá trị ở mức tối đa 100 thông qua chart.AxisY.Scaling.Maximum = new AxisBound(100), thêm một series thực với seriesColl.Add(seriesName, categories, values), và ghi kết quả bằng Document.Save.
Bước 3: Chọn Kiểu Biểu Đồ Khác
ChartType bao gồm các họ biểu đồ chuẩn của Word — Line, Bar, Column (cùng với các biến thể Stacked, PercentStacked, và 3D), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface, và các loại Word 2016 Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, và Waterfall. Đưa giá trị bạn muốn làm đối số chartType cho InsertChart — không có thành viên nào có thể thay đổi kiểu của biểu đồ hiện có sau khi chèn, vì vậy hãy chọn đúng loại ngay từ đầu hoặc thay thế hình dạng.
Bước 4: Thêm và Định Dạng Nhãn Dữ Liệu
Đặt series.HasDataLabels = true trước khi cấu hình series.DataLabels (một ChartDataLabelCollection) — các công tắc hiển thị của nó không có hiệu lực nào khi nhãn bị tắt. ShowValue, ShowCategoryName, và ShowPercentage kiểm soát những phần thông tin nào sẽ xuất hiện, và Position đặt chúng tương đối so với điểm dữ liệu.
Bước 5: Định Dạng Một Điểm Dữ Liệu Riêng Lẻ
Chỉ mục vào DataPoints của một series (một ChartDataPointCollection) để tới một ChartDataPoint và đặt Format, Marker, Explosion, hoặc InvertIfNegative của nó một cách độc lập với phần còn lại của series. Đây là cách bạn làm nổi bật một thanh, một lát, hoặc một dấu hiệu duy nhất mà không cần thay đổi kiểu toàn bộ series.
Các vấn đề thường gặp và cách khắc phục
Biểu đồ mới hiển thị dữ liệu demo không mong đợi. InsertChart đặt dữ liệu mẫu cho biểu đồ bằng chuỗi placeholder. Gọi chart.Series.Clear() trước khi thêm chuỗi của riêng bạn.
Hiding AxisY không xóa các đường lưới. Hidden ẩn đường trục và nhãn; các đường lưới là một công tắc riêng. Đặt HasMajorGridlines = false (và HasMinorGridlines = false nếu các đường lưới phụ cũng hiển thị).
Nhãn dữ liệu không xuất hiện sau khi đặt ShowValue = true. HasDataLabels không được đặt trên chuỗi trước. Đặt series.HasDataLabels = true, sau đó cấu hình series.DataLabels.
Scaling.Maximum dường như không áp dụng. Xác nhận rằng bạn đang đặt nó trên đối tượng trục đúng (chart.AxisY cho trục giá trị trong hầu hết các loại biểu đồ) và không có đường mã nào trước đó đặt lại Scaling trở lại mặc định AxisBound().
Câu hỏi thường gặp
Làm sao để ẩn chú giải của biểu đồ?
Đặt chart.Legend.Position = LegendPosition.None.
Làm thế nào để cố định trục ở một khoảng cụ thể thay vì tự động thu phóng?
Đặt AxisScaling.Minimum và/hoặc AxisScaling.Maximum (cả hai giá trị AxisBound) trên chart.AxisX.Scaling hoặc chart.AxisY.Scaling.
Làm sao để ẩn tiêu đề biểu đồ mà không xóa nó?
Đặt chart.Title.Show = false. Đối tượng ChartTitle và Text của nó vẫn còn; chỉ chú thích hiển thị bị ẩn.
Có những loại biểu đồ nào có sẵn?
ChartType liệt kê 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ùng với các loại Word 2016 (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
Có thể định dạng một điểm dữ liệu khác so với các điểm còn lại trong chuỗi không?
Có — truy cập vào ChartSeries.DataPoints và đặt Format, Marker hoặc Explosion của ChartDataPoint một cách độc lập.