Как работать с диаграммами в .NET

Как работать с диаграммами в .NET

Это руководство показывает, как вставить нативную диаграмму Word и управлять её внешним видом с помощью Aspose.Words FOSS для .NET — скрыть легенду и оси, зафиксировать масштаб оси значений, затем выбрать другой тип диаграммы и отформатировать подписи данных и отдельные точки. Aspose.Words FOSS для .NET доступен через 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.Drawing.Charts рядом с ядром пространства имён Aspose.Words. Минимальная, готовая к презентации диаграмма ChartType.Bar в новом Document часто подразумевает установку Legend.Position в LegendPosition.None, установку Hidden и HasMajorGridlines на AxisY и AxisX, установку Title.Show в false, очистку заполнителя ChartSeriesCollection с помощью Series.Clear() перед вызовом Series.Add(seriesName, categories, values), фиксирование 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, чтобы скрыть легенду, устанавливает Hidden = true и HasMajorGridlines = false на chart.AxisY и Hidden = true на chart.AxisX, устанавливает chart.Title.Show = false, очищает серию заполнителя с помощью seriesColl.Clear(), фиксирует ось значений на максимум 100 через chart.AxisY.Scaling.Maximum = new AxisBound(100), добавляет одну реальную серию с seriesColl.Add(seriesName, categories, values) и записывает результат с 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 — нет члена, который меняет тип уже существующей диаграммы после вставки, поэтому выберите правильный тип заранее или замените shape.


Шаг 4: Добавьте и отформатируйте подписи данных

Установите series.HasDataLabels = true перед настройкой series.DataLabels (это ChartDataLabelCollection) — переключатели отображения не оказывают видимого эффекта, пока подписи выключены. ShowValue, ShowCategoryName и ShowPercentage управляют тем, какие сведения отображаются, а Position размещает их относительно точки данных.


Шаг 5: Форматирование отдельной точки данных

Обратитесь к DataPoints серии (это ChartDataPointCollection), чтобы достичь одной 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.

Как зафиксировать ось на определённом диапазоне вместо автоматического масштабирования?

Установите AxisScaling.Minimum и/или AxisScaling.Maximum (оба значения AxisBound) на chart.AxisX.Scaling или chart.AxisY.Scaling.

Как скрыть заголовок диаграммы, не удаляя его?

Установите 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).

Могу ли я оформить одну точку данных иначе, чем остальные в её серии?

Да — обратитесь к ChartSeries.DataPoints по индексу и установите у этого ChartDataPoint Format, Marker или Explosion независимо.

См. также:

 Русский