Como Trabalhar com Gráficos em .NET

Como Trabalhar com Gráficos em .NET

Este guia mostra como inserir um gráfico nativo do Word e controlar sua aparência com Aspose.Words FOSS para .NET — ocultando a legenda e os eixos, corrigindo a escala do eixo de valores, e então escolhendo um tipo de gráfico diferente e formatando rótulos de dados e pontos individuais. Aspose.Words FOSS para .NET está disponível via NuGet ou compilando a partir do código-fonte.

Guia passo a passo

Passo 1: Obter a biblioteca

Clone o repositório e compile Aspose.Words.sln na configuração Release, então adicione uma referência de projeto a Aspose.Words.csproj do seu próprio projeto .NET, conforme descrito no guia de Instalação.


Passo 2: Inserir um gráfico e simplificar sua aparência

DocumentBuilder.InsertChart(chartType, width, height) insere uma forma de gráfico no cursor e devolve o Shape que o contém; sua propriedade Chart é o objeto Chart que você configura, com AxisX, AxisY, Legend e Title como seus principais sub-objetos. Os tipos de gráficos vivem no namespace Aspose.Words.Drawing.Charts ao lado do namespace central Aspose.Words. Um gráfico ChartType.Bar mínimo, pronto para apresentação, em um novo Document geralmente significa definir Legend.Position como LegendPosition.None, definir Hidden e HasMajorGridlines em AxisY e AxisX, definir Title.Show como false, limpar o placeholder ChartSeriesCollection com Series.Clear() antes de chamar Series.Add(seriesName, categories, values), fixar AxisY.Scaling.Maximum a um AxisBound fixo ao invés de permitir autoescalonamento, e então gravar o resultado com Document.Save. O exemplo completo — Document, DocumentBuilder, Chart, AxisX, AxisY, Legend, Title, ChartSeriesCollection, AxisBound e Document.Save — tem a seguinte aparência:

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");

Isso constrói um Document, insere um gráfico ChartType.Bar, define Chart.Legend.Position como LegendPosition.None para ocultar a legenda, define Hidden = true e HasMajorGridlines = false em chart.AxisY e Hidden = true em chart.AxisX, define chart.Title.Show = false, limpa a série de espaço reservado com seriesColl.Clear(), fixa o eixo de valores em um máximo 100 via chart.AxisY.Scaling.Maximum = new AxisBound(100), adiciona uma série real com seriesColl.Add(seriesName, categories, values) e grava o resultado com Document.Save.


Etapa 3: Escolha um Tipo de Gráfico Diferente

ChartType cobre as famílias padrão de gráficos do Word — Line, Bar, Column (mais variantes Stacked, PercentStacked e 3D), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface e os tipos do Word 2016 Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker e Waterfall. Passe o valor desejado como argumento chartType para InsertChart — não existe membro que altere o tipo de um gráfico existente após a inserção, portanto escolha o correto desde o início ou substitua a forma.


Etapa 4: Adicionar e Formatar Rótulos de Dados

Defina series.HasDataLabels = true antes de configurar series.DataLabels (um ChartDataLabelCollection) — seus alternadores de exibição não têm efeito visível enquanto os rótulos estiverem desativados. ShowValue, ShowCategoryName e ShowPercentage controlam quais informações são exibidas, e Position as posiciona em relação ao ponto de dados.


Etapa 5: Formatar um Ponto de Dados Individual

Indexe no DataPoints de uma série (um ChartDataPointCollection) para alcançar um ChartDataPoint e definir seu Format, Marker, Explosion ou InvertIfNegative independentemente do restante da série. É assim que você destaca uma única barra, fatia ou marcador sem reformular toda a série.

Problemas Comuns e Soluções

O novo gráfico exibe dados de demonstração inesperados. InsertChart preenche o gráfico com séries de espaço reservado. Chame chart.Series.Clear() antes de adicionar suas próprias séries.

Hiding AxisY não remove as linhas de grade. Hidden oculta a linha do eixo e os rótulos; as linhas de grade são um interruptor separado. Defina HasMajorGridlines = false (e HasMinorGridlines = false se as linhas de grade menores também estiverem visíveis).

Os rótulos de dados não aparecem após definir ShowValue = true. HasDataLabels não foi definido na série primeiro. Defina series.HasDataLabels = true, então configure series.DataLabels.

Scaling.Maximum não parece ser aplicado. Confirme se você está definindo isso no objeto de eixo correto (chart.AxisY para o eixo de valores na maioria dos tipos de gráfico) e que nenhum caminho de código anterior redefina Scaling de volta ao seu padrão AxisBound().

Perguntas Frequentes

Como ocultar a legenda de um gráfico?

Defina chart.Legend.Position = LegendPosition.None.

Como fixar um eixo em um intervalo específico em vez de autoescalar?

Defina AxisScaling.Minimum e/ou AxisScaling.Maximum (ambos valores AxisBound) em chart.AxisX.Scaling ou chart.AxisY.Scaling.

Como ocultar o título do gráfico sem excluí-lo?

Defina chart.Title.Show = false. O objeto ChartTitle e seu Text permanecem; apenas a legenda visível é suprimida.

Quais tipos de gráfico estão disponíveis?

ChartType lista as famílias clássicas (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, além das variantes empilhadas e 3D) ao lado dos tipos do Word 2016 (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).

Posso formatar um ponto de dados de forma diferente do restante da sua série?

Sim — indexe em ChartSeries.DataPoints e defina o Format, Marker ou Explosion desse ChartDataPoint de forma independente.

Ver também

 Português