Робота з діаграмами
Робота з діаграмами
Aspose.Words FOSS для .NET може вставляти рідні діаграми Word — ті самі діаграми DrawingML, які створює сам Word — у вигляді форми в шарі малювання. DocumentBuilder.InsertChart створює форму та повертає її; властивість Chart форми відкриває серії, осі, легенду та форматування. Цей посібник охоплює створення діаграми, вибір типу діаграми, роботу з серіями та точками даних, осі та сітки, а також форматування елементів діаграми.
Створення діаграми
Викличте DocumentBuilder.InsertChart(chartType, width, height), щоб вставити форму діаграми в позиції курсора і отримати назад Shape, який її містить. Її властивість Chart — це об’єкт Chart, який ви налаштовуєте. Щойно вставлена діаграма містить демо-серії-заповнювачі, тому очистіть Chart.Series перед додаванням реальних даних за допомогою 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");Цей приклад створює Document, використовує DocumentBuilder.InsertChart(ChartType.Line, 432, 252) для вставки форми лінійної діаграми, читає shape.Chart, щоб отримати об’єкт Chart, викликає chart.Series.Clear() для видалення серії-заповнювача, додає одну реальну серію за допомогою chart.Series.Add(seriesName, categories, values) і записує результат за допомогою 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 є ChartSeriesCollection ChartSeries об’єктів. Окрім перевантаження Add(seriesName, categories, values), використаного вище, ChartSeriesCollection також має перевантаження для пар значень X/Y, дат і розмірів бульбашок, а також Insert, Remove(index) та Clear(). Кожен ChartSeries надає DataPoints (a 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 та межі.
Форматування елементів діаграми
Більшість елементів діаграми — серії, точки даних, вісі, заголовок і легенда — надають властивість Format типу ChartFormat, яка, у свою чергу, надає Fill та Stroke для кольорів цього елементу, а також ShapeType (ChartShapeType) для форм маркерів точок даних. ChartFormat.SetDefaultFill() скидає елемент до його стандартного вигляду, визначеного темою.
Поради та найкращі практики
- Завжди очищайте або замінюйте серію-заповнювач (
chart.Series.Clear()) перед додаванням реальних даних — нововставлена діаграма вже містить зразкові дані. - Використовуйте перевантаження
ChartSeriesCollection.Add, які відповідають формі ваших даних (категорії, пари X/Y, дати або розміри бульб), замість примусу всього через пари категорія/значення. - Встановіть
HasDataLabels = trueу серії перед налаштуванням її колекціїDataLabels— властивості відображення колекції не мають видимого впливу, доки мітки вимкнено. - Прочитайте
Chart.ChartSpaceабо перевірте конкретнийChartType, перш ніж покладатися на поведінку ліній сітки або осей, яка відрізняється між класичними діаграмами та діаграмами у стилі Word-2016. - Віддавайте перевагу
ChartFormat.SetDefaultFill()замість ручного очищення кожної властивості заповнення, коли потрібно скинути зовнішній вигляд елемента.
Типові проблеми
| Проблема | Причина | Виправлення |
|---|---|---|
| Новий графік показує неочікувані демонстраційні дані | InsertChart заповнює графік заповнювальною серією | Викличте chart.Series.Clear() перед додаванням вашої власної серії |
| Мітки даних не з’являються | HasDataLabels не був встановлений для серії перед налаштуванням DataLabels | Встановіть series.HasDataLabels = true, потім налаштуйте ShowValue/ShowCategoryName на series.DataLabels |
| Лінії сітки не відображаються на осі значень | 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) (або одну з інших перевантажень Add для даних X/Y, дати або бульбашкових даних).
Які типи діаграм доступні?
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 (a ChartDataPointCollection) і встановити Format, Marker або Explosion цього ChartDataPoint незалежно від форматування на рівні серії.
API Reference Підсумок
| Клас/Метод | Опис |
|---|---|
DocumentBuilder.InsertChart | Вставляє форму діаграми в позиції курсора та повертає її. |
Chart | Об’єкт конфігурації діаграми, доступний через Shape.Chart. |
ChartType | Перелік доступних типів діаграм (лінійна, стовпчикові, кругова та типи діаграм Word-2016). |
ChartSeriesCollection / ChartSeries | Серії даних діаграми та методи для їх додавання, вставки або видалення. |
ChartDataPointCollection / ChartDataPoint | Форматування окремих точок у серії. |
ChartDataLabelCollection / ChartDataLabel | Мітки значень/категорій, що показуються на точках діаграми. |
ChartAxis / ChartAxisCollection | Налаштування осей — сітка, одиниці вимірювання, точка перетину, мітки поділок. |
ChartLegend / LegendPosition | Видимість та розташування легенди. |
ChartTitle | Загальний підпис діаграми. |
ChartDataTable | Необов’язкова таблиця значень серій, що показана під областю діаграми. |
ChartFormat | Форматування заповнення, контуру та форми, спільне для більшості елементів діаграми. |