Hur man arbetar med diagram i .NET
Denna guide visar hur man infogar ett inbyggt Word-diagram och styr dess utseende med Aspose.Words FOSS för .NET — dölja legenden och axlarna, fixera värdeaxelns skala, och sedan välja en annan diagramtyp samt formatera datamärkningar och enskilda punkter. Aspose.Words FOSS för .NET är tillgänglig via NuGet eller genom att bygga från källkod.
Steg-för-steg-guide
Steg 1: Hämta biblioteket
Klona arkivet och bygg Aspose.Words.sln i Release-konfiguration, lägg sedan till en projektreferens till Aspose.Words.csproj från ditt eget .NET-projekt, enligt beskrivningen i Installationsguiden.
Steg 2: Infoga ett diagram och förenkla dess utseende
DocumentBuilder.InsertChart(chartType, width, height) infogar en diagramform vid markören och returnerar den omgivande Shape; dess Chart-egenskap är det Chart-objekt du konfigurerar, med AxisX, AxisY, Legend och Title som dess huvuddelobjekt. Diagramtyper finns i Aspose.Words.Drawing.Charts-namnutrymmet tillsammans med kärn-Aspose.Words-namnutrymmet. Ett minimalt, presentationsklart ChartType.Bar-diagram på en ny Document innebär ofta att sätta Legend.Position till LegendPosition.None, sätta Hidden och HasMajorGridlines på AxisY och AxisX, sätta Title.Show till false, rensa platshållaren ChartSeriesCollection med Series.Clear() innan du anropar Series.Add(seriesName, categories, values), låsa AxisY.Scaling.Maximum till en fast AxisBound istället för att låta den autoskala, och sedan skriva resultatet med Document.Save. Det fullständiga exemplet — Document, DocumentBuilder, Chart, AxisX, AxisY, Legend, Title, ChartSeriesCollection, AxisBound och Document.Save — ser ut så här:
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");Det här bygger en Document, infogar ett ChartType.Bar diagram, sätter Chart.Legend.Position till LegendPosition.None för att dölja legenden, sätter Hidden = true och HasMajorGridlines = false på chart.AxisY och Hidden = true på chart.AxisX, sätter chart.Title.Show = false, rensar platshållarserien med seriesColl.Clear(), fixerar värdeaxeln till ett 100 maximum via chart.AxisY.Scaling.Maximum = new AxisBound(100), lägger till en riktig serie med seriesColl.Add(seriesName, categories, values), och skriver resultatet med Document.Save.
Steg 3: Välj en annan diagramtyp
ChartType täcker de standard Word-diagramfamiljerna — Line, Bar, Column (plus Stacked, PercentStacked och 3D varianter), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface, och Word 2016-typerna Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker och Waterfall. Skicka det värde du vill ha som chartType-argument till InsertChart — det finns ingen medlem som ändrar en befintlig diagramtyp efter infogning, så välj rätt från början eller ersätt formen.
Steg 4: Lägg till och formatera dataetiketter
Ställ in series.HasDataLabels = true innan du konfigurerar series.DataLabels (en ChartDataLabelCollection) — dess visningsväxlar har ingen synlig effekt när etiketter är avstängda. ShowValue, ShowCategoryName och ShowPercentage styr vilka informationsdelar som visas, och Position placerar dem relativt till datapunkten.
Steg 5: Formatera en enskild datapunkt
Indexera in i en seriens DataPoints (en ChartDataPointCollection) för att nå en ChartDataPoint och sätt dess Format, Marker, Explosion eller InvertIfNegative oberoende av resten av serien. Så här markerar du ett enskilt stapel, skiva eller markör utan att omstyla hela serien.
Vanliga problem och lösningar
Det nya diagrammet visar oväntade demodata. InsertChart Fyller diagrammet med platshållarserier. Anropa chart.Series.Clear() innan du lägger till dina egna serier.
Hiding AxisY tar inte bort rutnätslinjerna. Hidden döljer axellinjen och etiketterna; rutnäten är en separat växlare. Ställ in HasMajorGridlines = false (och HasMinorGridlines = false om mindre rutnätslinjer också är synliga).
Dataetiketter visas inte efter att ha ställt in ShowValue = true. HasDataLabels var inte inställt på serien först. Ställ in series.HasDataLabels = true, sedan konfigurera series.DataLabels.
Scaling.Maximum verkar inte tillämpas. Bekräfta att du ställer in det på rätt axelobjekt (chart.AxisY för värdeaxeln i de flesta diagramtyper) och att ingen tidigare kodväg återställer Scaling tillbaka till standardinställningen AxisBound().
Vanliga frågor
Hur döljer jag diagramlegenden?
Ställ in chart.Legend.Position = LegendPosition.None.
Hur låser jag en axel till ett specifikt intervall istället för automatisk skalning?
Ställ in AxisScaling.Minimum och/eller AxisScaling.Maximum (båda AxisBound värden) på chart.AxisX.Scaling eller chart.AxisY.Scaling.
Hur döljer jag diagramrubriken utan att ta bort den?
Ställ in chart.Title.Show = false. ChartTitle-objektet och dess Text förblir; endast den synliga rubriken undertrycks.
Vilka diagramtyper är tillgängliga?
ChartType listar de klassiska familjerna (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, samt staplade och 3D-varianter) tillsammans med Word 2016-typerna (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
Kan jag formatera en datapunkt annorlunda än resten av dess serie?
Ja — indexera in i ChartSeries.DataPoints och sätt den ChartDataPoints Format, Marker eller Explosion separat.