Diagramok kezelése
Diagramok használata
Aspose.Words FOSS for .NET képes beilleszteni natív Word-diagramokat — ugyanazokat a DrawingML diagramokat, amelyeket a Word maga hoz létre — alakzatként a rajzrétegben. DocumentBuilder.InsertChart létrehozza az alakzatot és visszaadja; az alakzat Chart tulajdonsága elérhetővé teszi a sorozatokat, tengelyeket, jelmagyarázatot és a formázást. Ez az útmutató a diagram létrehozását, diagramtípus kiválasztását, sorozatokkal és adatpontokkal való munkát, tengelyeket és rácsvonalakat, valamint a diagramelemek formázását tárgyalja.
Diagram létrehozása
Hívja meg a DocumentBuilder.InsertChart(chartType, width, height) függvényt, hogy a kurzornál egy diagram alakzatot szúrjon be, és visszakapja a tartalmazó Shape objektumot. Ennek Chart tulajdonsága a Chart objektum, amelyet konfigurálni kell. Egy frissen beszúrt diagram helyettesítő bemutató sorozatokkal érkezik, ezért törölje a Chart.Series értékét, mielőtt valódi adatokat adna hozzá a ChartSeriesCollection.Add(seriesName, categories, values) segítségével:
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");Ez a példa egy Document objektumot hoz létre, a DocumentBuilder.InsertChart(ChartType.Line, 432, 252) segítségével egy vonaldiagram alakzatot szúr be, a shape.Chart olvasásával megszerzi a Chart objektumot, meghívja a chart.Series.Clear() függvényt a helyettesítő sorozat eltávolításához, egy valódi sorozatot ad hozzá a chart.Series.Add(seriesName, categories, values) használatával, és a Document.Save segítségével írja ki az eredményt.
Diagramtípusok
ChartType lefedi a szabványos Word diagramcsaládokat — Line, Bar, Column (és azok Stacked, PercentStacked, valamint 3D változatai), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface, valamint az újabb Word 2016 diagramtípusok Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker és Waterfall. Adja meg a kívánt értéket a chartType argumentummal a InsertChart hívásakor; nincs mód egy már létező diagram típusának módosítására a beszúrás után, kivéve ha az alakzatot lecseréli.
Sorozatok és adatpontok
Chart.Series egy ChartSeriesCollection ChartSeries objektum. A fent használt Add(seriesName, categories, values) túlterhelésen túl, a ChartSeriesCollection további túlterhelésekkel rendelkezik X/Y értékpárokra, dátumokra és buborékméretekre, valamint Insert, Remove(index) és Clear(). Minden ChartSeries DataPoints-t (egy ChartDataPointCollection) tesz elérhetővé pontonkénti formázáshoz — Format, Marker, Explosion és InvertIfNegative — és HasDataLabels / DataLabels-t a ChartDataLabelCollection bekapcsolásához és konfigurálásához (ShowValue, ShowCategoryName, ShowPercentage, Position).
Tengelyek és hálóvonalak
Chart.AxisX, AxisY és AxisZ ChartAxis objektumok (a Chart.Axes egy ChartAxisCollection a mindegyik iterálásához). Minden tengely rendelkezik HasMajorGridlines / HasMinorGridlines, MajorUnit / MinorUnit (páros *IsAuto jelzőkkel), Crosses / CrossesAt, CategoryType, és egy TickLabels objektummal (AxisTickLabels) a címke betűtípusa és tájolása számára. ChartAxis.Title (ChartAxisTitle) állítja be a tengely felirat szövegét a Text és Show tulajdonságain keresztül.
Jelmagyarázat, cím és adat táblázat
Chart.Title (ChartTitle) állítja be a diagram általános feliratát — Text, Show és Font. Chart.Legend (ChartLegend) szabályozza, hogy a jelmagyarázat hol és mikor jelenik meg a Position (egy LegendPosition érték, például Bottom, Right vagy Top) segítségével, és elérhetővé teszi az egyedi LegendEntries. Chart.DataTable (ChartDataTable) megjelenítheti az alatta lévő sorozatértékeket táblázatként a diagram terület alatt, Show, HasLegendKeys és keretkapcsolók segítségével.
Diagram elemek formázása
A legtöbb diagram elem — sorozatok, adatpontok, tengelyek, a cím és a jelmagyarázat — Format nevű, ChartFormat típusú tulajdonságot tesz elérhetővé, amely viszont Fill és Stroke értékeket biztosít az elem színeihez, valamint egy ShapeType (ChartShapeType) adatpont-jelölő alakzatokhoz. ChartFormat.SetDefaultFill() visszaállít egy elemet a témája által meghatározott alapértelmezett megjelenésre.
Tippek és bevált gyakorlatok
- Mindig törölje vagy cserélje le a helykitöltő sorozatot (
chart.Series.Clear()) a valós adatok hozzáadása előtt — egy frissen beszúrt diagram már mintaadatokkal érkezik. - Használjon
ChartSeriesCollection.Addtúlterheléseket, amelyek megfelelnek az adatstruktúrájának (kategóriák, X/Y párok, dátumok vagy buborékméretek), ahelyett, hogy mindent kategória/érték párokon keresztül erőltetne. - Állítsa be a
HasDataLabels = trueértéket egy sorozaton, mielőtt konfigurálná aDataLabelsgyűjteményt — a gyűjtemény megjelenítési tulajdonságai nem láthatóak, amíg a címkék ki vannak kapcsolva. - Olvassa el a
Chart.ChartSpacedokumentációt vagy ellenőrizze a konkrétChartTypebeállítást, mielőtt a klasszikus és a Word-2016-stílusú diagramok közötti rácsvonal- vagy tengelyviselkedésre támaszkodna. - Részesítse előnyben a
ChartFormat.SetDefaultFill()használatát a minden kitöltési tulajdonság kézi törlése helyett, ha egy elem megjelenését szeretné visszaállítani.
Gyakori problémák
| Probléma | Ok | Megoldás |
|---|---|---|
| Az új diagram váratlan demó adatokat mutat | InsertChart feltölti a diagramot helyőrző sorozattal | Hívja meg a(z) chart.Series.Clear() függvényt, mielőtt saját sorozatot adna hozzá |
| Az adatcímkék nem jelennek meg | A(z) HasDataLabels nem volt beállítva a sorozaton, mielőtt a(z) DataLabels beállításra került volna | Állítsa be series.HasDataLabels = true, majd konfigurálja a ShowValue/ShowCategoryName a(z) series.DataLabels |
| A rácsvonalak nem jelennek meg az értéktengelyen | HasMajorGridlines/HasMinorGridlines alapértelmezés szerint false erre a tengelyre | Állítsa be a(z) chart.AxisY.HasMajorGridlines = true (és HasMinorGridlines, ha szükséges) |
| A jelmagyarázat nem jelenik meg | Chart.Legend.Position be van állítva LegendPosition.None | Állítsa be a(z) Position értékét Bottom, Right, Top, Left vagy TopRight értékre |
FAQ
Hogyan szúrhatok be egy diagramot egy dokumentumba?
Hívja meg a DocumentBuilder.InsertChart(chartType, width, height) függvényt. Visszaadja a tartalmazó Shape-t; olvassa el a Chart tulajdonságát a diagram konfigurálásához.
Hogyan adhatok adatot egy diagramhoz?
Törölje a helyőrző sorozatot a chart.Series.Clear() segítségével, majd hívja meg a chart.Series.Add(seriesName, categories, values) függvényt (vagy a többi Add túlterhelés egyikét X/Y, dátum vagy buborék adatokhoz).
Mely diagramtípusok állnak rendelkezésre?
ChartType tartalmazza a klasszikus családokat (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, valamint azok halmozott és 3D változatait) és a Word 2016 diagramtípusait (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
Hogyan változtathatom meg a jelmagyarázat megjelenési helyét?
Állítsa be a Chart.Legend.Position értékét egy LegendPosition értékre, például LegendPosition.Bottom vagy LegendPosition.Right.
Formázhatok egy egyedi adatpontot másképp, mint a sorozat többi részét?
Igen — indexelj a ChartSeries.DataPoints (egy ChartDataPointCollection)-ban, és állítsd be a ChartDataPoint Format, Marker vagy Explosion értékét a sorozatszintű formázástól függetlenül.
API Reference összegzés
| Osztály/Módszer | Leírás |
|---|---|
DocumentBuilder.InsertChart | Beszúr egy diagram alakzatot a kurzor helyére, és visszaadja. |
Chart | A diagram konfigurációs objektuma, amelyet a Shape.Chart útján érhetünk el. |
ChartType | Az elérhető diagramtípusok felsorolása (vonal, oszlop, kör, valamint a Word-2016 diagramtípusok). |
ChartSeriesCollection / ChartSeries | A diagram adat sorozatai és azok hozzáadására, beszúrására vagy eltávolítására szolgáló módszerek. |
ChartDataPointCollection / ChartDataPoint | Pontonkénti formázás egy sorozaton belül. |
ChartDataLabelCollection / ChartDataLabel | Az érték/kategória címkék, amelyek a diagram pontjain jelennek meg. |
ChartAxis / ChartAxisCollection | Tengely beállítása — rácsvonalak, egységek, metszéspont, skálacímkék. |
ChartLegend / LegendPosition | Legend visibility and placement. |
ChartTitle | The chart’s overall caption. |
ChartDataTable | Optional table of series values shown below the plot area. |
ChartFormat | Fill, stroke, and shape formatting shared by most chart elements. |