Come lavorare con i grafici in .NET
Questo manuale mostra come inserire un grafico Word nativo e controllarne l’aspetto con Aspose.Words FOSS per .NET — nascondendo la legenda e gli assi, fissando la scala dell’asse dei valori, quindi scegliendo un tipo di grafico diverso e formattando le etichette dei dati e i punti individuali. Aspose.Words FOSS per .NET è disponibile tramite NuGet o compilando dal sorgente.
Guida passo-passo
Passo 1: Ottieni la libreria
Clona il repository e compila Aspose.Words.sln in configurazione Release, quindi aggiungi un riferimento al progetto Aspose.Words.csproj dal tuo progetto .NET, come descritto nella Guida all’installazione.
Passo 2: Inserisci un grafico e semplifica il suo aspetto
DocumentBuilder.InsertChart(chartType, width, height) inserisce una forma di grafico al cursore e restituisce il Shape contenente; la sua proprietà Chart è l’oggetto Chart che configuri, con AxisX, AxisY, Legend e Title come suoi principali sotto-oggetti. I tipi di grafico risiedono nello spazio dei nomi Aspose.Words.Drawing.Charts accanto allo spazio dei nomi principale Aspose.Words. Un grafico ChartType.Bar minimale, pronto per la presentazione, su un nuovo Document spesso richiede di impostare Legend.Position a LegendPosition.None, impostare Hidden e HasMajorGridlines su AxisY e AxisX, impostare Title.Show su false, cancellare il segnaposto ChartSeriesCollection con Series.Clear() prima di chiamare Series.Add(seriesName, categories, values), fissare AxisY.Scaling.Maximum a un AxisBound fisso invece di lasciarlo scalare automaticamente, quindi scrivere il risultato con Document.Save. L’esempio completo — Document, DocumentBuilder, Chart, AxisX, AxisY, Legend, Title, ChartSeriesCollection, AxisBound e Document.Save — appare così:
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");Questo crea un Document, inserisce un grafico ChartType.Bar, imposta Chart.Legend.Position su LegendPosition.None per nascondere la legenda, imposta Hidden = true e HasMajorGridlines = false su chart.AxisY e Hidden = true su chart.AxisX, imposta chart.Title.Show = false, cancella la serie segnaposto con seriesColl.Clear(), fissa l’asse dei valori a un massimo 100 tramite chart.AxisY.Scaling.Maximum = new AxisBound(100), aggiunge una serie reale con seriesColl.Add(seriesName, categories, values), e scrive il risultato con Document.Save.
Passo 3: Scegli un tipo di grafico diverso
ChartType copre le famiglie di grafici standard di Word — Line, Bar, Column (più le varianti Stacked, PercentStacked e 3D), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface, e i tipi di Word 2016 Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, e Waterfall. Passa il valore desiderato come argomento chartType a InsertChart — non esiste un membro che cambi il tipo di un grafico esistente dopo l’inserimento, quindi scegli quello giusto fin dall’inizio o sostituisci la forma.
Passo 4: Aggiungi e formatta le etichette dei dati
Imposta series.HasDataLabels = true prima di configurare series.DataLabels (un ChartDataLabelCollection) — i suoi interruttori di visualizzazione non hanno alcun effetto visibile mentre le etichette sono disattivate. ShowValue, ShowCategoryName e ShowPercentage controllano quali informazioni vengono mostrate, e Position le posiziona rispetto al punto dati.
Passo 5: Formatta un punto dati individuale
Indicizza il DataPoints di una serie (un ChartDataPointCollection) per raggiungere un ChartDataPoint e impostare il suo Format, Marker, Explosion o InvertIfNegative in modo indipendente dal resto della serie. Questo è il modo per evidenziare una singola barra, fetta o marcatore senza ridisegnare l’intera serie.
Problemi comuni e soluzioni
Il nuovo grafico mostra dati demo inaspettati. InsertChart popola il grafico con serie segnaposto. Chiama chart.Series.Clear() prima di aggiungere le tue serie.
Hiding AxisY non rimuove le linee della griglia. Hidden nasconde la linea dell’asse e le etichette; le linee della griglia sono un interruttore separato. Imposta HasMajorGridlines = false (e HasMinorGridlines = false se le linee della griglia secondarie sono anche visibili).
Le etichette dei dati non appaiono dopo aver impostato ShowValue = true. HasDataLabels non era impostato nella serie prima. Imposta series.HasDataLabels = true, quindi configura series.DataLabels.
Scaling.Maximum non sembra applicarsi. Conferma di impostarlo sull’oggetto asse corretto (chart.AxisY per l’asse dei valori nella maggior parte dei tipi di grafico) e che nessun percorso di codice precedente lo reimposta Scaling al suo valore predefinito AxisBound().
Domande frequenti
Come nascondere la legenda di un grafico?
Imposta chart.Legend.Position = LegendPosition.None.
Come posso fissare un asse a un intervallo specifico invece di ridimensionarlo automaticamente?
Imposta AxisScaling.Minimum e/o AxisScaling.Maximum (entrambi i valori AxisBound) su chart.AxisX.Scaling o chart.AxisY.Scaling.
Come nascondere il titolo del grafico senza eliminarlo?
Imposta chart.Title.Show = false. L’oggetto ChartTitle e il suo Text rimangono; viene soppressa solo la didascalia visibile.
Quali tipi di grafico sono disponibili?
ChartType elenca le famiglie classiche (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, più le varianti impilate e 3D) accanto ai tipi di Word 2016 (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
Posso formattare un punto dati in modo diverso rispetto al resto della sua serie?
Sì — indicizza in ChartSeries.DataPoints e imposta il Format, il Marker o il Explosion del ChartDataPoint in modo indipendente.