Arbeta med diagram
Arbeta med diagram
Aspose.Words FOSS för .NET kan infoga inbyggda Word-diagram — samma DrawingML diagram som Word själv skapar — som en form i ritlagret. DocumentBuilder.InsertChart skapar formen och returnerar den; formens Chart egenskap visar serier, axlar, legend och formatering. Den här guiden täcker att skapa ett diagram, välja diagramtyp, arbeta med serier och datapunkter, axlar och rutnät, samt formatera diagramelement.
Skapa ett diagram
Anropa DocumentBuilder.InsertChart(chartType, width, height) för att infoga en diagramform vid markören och få tillbaka den innehållande Shape. Dess Chart egenskap är det Chart objekt du konfigurerar. Ett nyskapat diagram levereras med platshållar-demo-serier, så rensa Chart.Series innan du lägger till riktiga data med 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");Detta exempel bygger en Document, använder DocumentBuilder.InsertChart(ChartType.Line, 432, 252) för att infoga en linjediagramform, läser shape.Chart för att få Chart objektet, anropar chart.Series.Clear() för att ta bort platshållarserien, lägger till en riktig serie med chart.Series.Add(seriesName, categories, values), och skriver resultatet med Document.Save.
Diagramtyper
ChartType täcker de standardiserade Word-diagramfamiljerna — Line, Bar, Column (plus deras Stacked, PercentStacked och 3D varianter), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface, och de nyare Word 2016-diagramtyperna Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker och Waterfall. Skicka det önskade värdet som argumentet chartType till InsertChart; det finns inget sätt att ändra en befintlig diagramtyp efter infogning annat än att ersätta formen.
Serier och datapunkter
Chart.Series är en ChartSeriesCollection av ChartSeries objekt. Utöver den Add(seriesName, categories, values) överlagring som användes ovan, har ChartSeriesCollection också överlagringar för X/Y-värdepar, datum och bubbla-storlekar, samt Insert, Remove(index) och Clear(). Varje ChartSeries exponerar DataPoints (en ChartDataPointCollection) för formatering per punkt — Format, Marker, Explosion och InvertIfNegative — och HasDataLabels / DataLabels för att aktivera och konfigurera en ChartDataLabelCollection (ShowValue, ShowCategoryName, ShowPercentage, Position).
Axlar och rutnät
Chart.AxisX, AxisY och AxisZ är ChartAxis objekt (med Chart.Axes som en ChartAxisCollection för att iterera alla). Varje axel har HasMajorGridlines / HasMinorGridlines, MajorUnit / MinorUnit (med matchande *IsAuto-flaggor), Crosses / CrossesAt, CategoryType, och ett TickLabels objekt (AxisTickLabels) för etikettens teckensnitt och orientering. ChartAxis.Title (ChartAxisTitle) anger axelrubrikens text via dess Text och Show egenskaper.
Förklaring, titel och datatabell
Chart.Title (ChartTitle) anger diagrammets övergripande rubrik — Text, Show och Font. Chart.Legend (ChartLegend) styr om och var förklaringen visas via Position (ett LegendPosition värde såsom Bottom, Right eller Top) och exponerar individuella LegendEntries. Chart.DataTable (ChartDataTable) kan visa de underliggande serievärdena som en tabell under plotområdet, med Show, HasLegendKeys och kantväxlar.
Formatering av diagramelement
De flesta diagramelement — serier, datapunkter, axlar, titeln och förklaringen — exponerar en Format egenskap av typen ChartFormat, som i sin tur exponerar Fill och Stroke för elementets färger, samt en ShapeType (ChartShapeType) för datapunkt-markörformer. ChartFormat.SetDefaultFill() återställer ett element till dess temastyrda standardutseende.
Tips och bästa praxis
- Rensa alltid eller ersätt platshållarserien (
chart.Series.Clear()) innan du lägger till riktiga data — ett nyinfört diagram levereras med exempeldata redan i det. - Använd
ChartSeriesCollection.Add-överkastningar som matchar din datastruktur (kategorier, X/Y-par, datum eller bubbla-storlekar) istället för att tvinga allt genom kategori/värde-par. - Ställ in
HasDataLabels = truepå en serie innan du konfigurerar dessDataLabels-samling — samlingens visningsinställningar har ingen synlig effekt medan etiketter är avstängda. - Läs
Chart.ChartSpaceeller kontrollera den specifikaChartTypeinnan du förlitar dig på rutnätslinje- eller axelbeteende som skiljer sig mellan klassiska diagram och diagram i Word-2016-stil. - Föredra
ChartFormat.SetDefaultFill()framför att manuellt rensa varje fyllnings-egenskap när du vill återställa ett elements utseende.
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
| Nytt diagram visar oväntade demodata | InsertChart sår diagrammet med platshållarserier | Anropa chart.Series.Clear() innan du lägger till dina egna serier |
| Dataetiketter visas inte | HasDataLabels var inte inställd på serien innan DataLabels konfigurerades | Ställ in series.HasDataLabels = true, konfigurera sedan ShowValue/ShowCategoryName på series.DataLabels |
| Rutnätslinjer visas inte på värdeaxeln | HasMajorGridlines/HasMinorGridlines har som standard false för den axeln | Ange chart.AxisY.HasMajorGridlines = true (och HasMinorGridlines om behövs) |
| Legenden visas inte | Chart.Legend.Position är inställd på LegendPosition.None | Ställ in Position på Bottom, Right, Top, Left eller TopRight |
FAQ
Hur infogar jag ett diagram i ett dokument?
Anropa DocumentBuilder.InsertChart(chartType, width, height). Den returnerar den innehållande Shape; läs dess Chart-egenskap för att konfigurera diagrammet.
Hur lägger jag till data i ett diagram?
Rensa platshållarserien med chart.Series.Clear(), och anropa sedan chart.Series.Add(seriesName, categories, values) (eller en av de andra Add överladdningarna för X/Y-, datum- eller bubbeldatat).
Vilka diagramtyper finns tillgängliga?
ChartType inkluderar de klassiska familjerna (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, plus deras staplade och 3D-varianter) och Word 2016-diagramtyperna (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
Hur ändrar jag var legenden visas?
Ställ in Chart.Legend.Position till ett LegendPosition-värde, till exempel LegendPosition.Bottom eller LegendPosition.Right.
Kan jag formatera en enskild datapunkt annorlunda än resten av dess serie?
Ja — indexera in i ChartSeries.DataPoints (en ChartDataPointCollection) och sätt den ChartDataPoints Format, Marker eller Explosion oberoende av formateringen på serienivå.
API Reference Sammanfattning
| Klass/Metod | Beskrivning |
|---|---|
DocumentBuilder.InsertChart | Infogar en diagramform vid markören och returnerar den. |
Chart | Diagramkonfigurationsobjektet, nås via Shape.Chart. |
ChartType | Enum för tillgängliga diagramtyper (linje, stapel, cirkel och Word-2016-diagramtyper). |
ChartSeriesCollection / ChartSeries | Diagrammets dataserier och metoder för att lägga till, infoga eller ta bort dem. |
ChartDataPointCollection / ChartDataPoint | Formatering per punkt inom en serie. |
ChartDataLabelCollection / ChartDataLabel | Värde-/kategorietiketter som visas på diagrampunkter. |
ChartAxis / ChartAxisCollection | Axelkonfiguration — rutnät, enheter, korsningspunkt, etiketter för delstreck. |
ChartLegend / LegendPosition | Synlighet och placering av förklaringsrutan. |
ChartTitle | Diagrammets övergripande rubrik. |
ChartDataTable | Valfri tabell med serievärden som visas under diagramområdet. |
ChartFormat | Fyllning, linje och formformatering som delas av de flesta diagramelement. |