Jak pracovat s grafy v .NET
Tento průvodce ukazuje, jak vložit nativní graf Wordu a ovládat jeho vzhled pomocí Aspose.Words FOSS pro .NET — skrytím legendy a os, úpravou měřítka hodnotové osy, následným výběrem jiného typu grafu a formátováním popisků dat a jednotlivých bodů. Aspose.Words FOSS pro .NET je k dispozici přes NuGet nebo sestavením ze zdrojového kódu.
Postupný návod
Krok 1: Získání knihovny
Naklonujte repozitář a sestavte Aspose.Words.sln v konfiguraci Release, poté přidejte odkaz na projekt Aspose.Words.csproj z vašeho vlastního projektu .NET, jak je popsáno v průvodci instalací.
Krok 2: Vložení grafu a zjednodušení jeho vzhledu
DocumentBuilder.InsertChart(chartType, width, height) vloží tvar grafu na pozici kurzoru a vrátí obsahující Shape; jeho vlastnost Chart je objekt Chart, který konfigurujete, s AxisX, AxisY, Legend a Title jako hlavními podobjekty. Typy grafů jsou umístěny v jmenném prostoru Aspose.Words.Drawing.Charts vedle jádrového jmenného prostoru Aspose.Words. Minimální, prezentaci připravený ChartType.Bar graf na novém Document často znamená nastavení Legend.Position na LegendPosition.None, nastavení Hidden a HasMajorGridlines na AxisY a AxisX, nastavení Title.Show na false, vymazání zástupného ChartSeriesCollection pomocí Series.Clear() před voláním Series.Add(seriesName, categories, values), přiřazení AxisY.Scaling.Maximum k pevné AxisBound místo automatického škálování, a poté zápis výsledku pomocí Document.Save. Kompletní příklad — Document, DocumentBuilder, Chart, AxisX, AxisY, Legend, Title, ChartSeriesCollection, AxisBound a Document.Save — vypadá takto:
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");Toto vytvoří Document, vloží ChartType.Bar graf, nastaví Chart.Legend.Position na LegendPosition.None pro skrytí legendy, nastaví Hidden = true a HasMajorGridlines = false na chart.AxisY a Hidden = true na chart.AxisX, nastaví chart.Title.Show = false, vymaže zástupnou sérii pomocí seriesColl.Clear(), pevně nastaví hodnotovou osu na maximum 100 pomocí chart.AxisY.Scaling.Maximum = new AxisBound(100), přidá jednu skutečnou sérii pomocí seriesColl.Add(seriesName, categories, values) a zapíše výsledek pomocí Document.Save.
Krok 3: Vyberte jiný typ grafu
ChartType pokrývá standardní rodiny grafů Wordu — Line, Bar, Column (plus varianty Stacked, PercentStacked a 3D), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface a typy Word 2016 Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker a Waterfall. Předávejte požadovanou hodnotu jako argument chartType pro InsertChart — neexistuje žádný člen, který by po vložení měnil typ existujícího grafu, takže vyberte ten správný předem nebo nahraďte tvar.
Krok 4: Přidejte a formátujte popisky dat
Nastavte series.HasDataLabels = true před konfigurací series.DataLabels (a ChartDataLabelCollection) — jeho přepínače zobrazení nemají žádný viditelný účinek, když jsou popisky vypnuté. ShowValue, ShowCategoryName a ShowPercentage řídí, které informace se zobrazí, a Position je umisťuje relativně k datovému bodu.
Krok 5: Formátujte jednotlivý datový bod
Indexujte do DataPoints série (a ChartDataPointCollection), abyste získali jeden ChartDataPoint a nastavili jeho Format, Marker, Explosion nebo InvertIfNegative nezávisle na zbytku série. Takto zvýrazníte jeden sloupec, výsek nebo značku, aniž byste přetvořili celou sérii.
Časté problémy a opravy
Nový graf zobrazuje neočekávaná ukázková data. InsertChart naplní graf zástupnými sériemi. Zavolejte chart.Series.Clear() před přidáním vlastních sérií.
Hiding AxisY neodstraňuje mřížky. Hidden skryje čáru osy a popisky; mřížky jsou samostatný přepínač. Nastavte HasMajorGridlines = false (a HasMinorGridlines = false pokud jsou také viditelné pomocné mřížky).
Datové popisky se nezobrazí po nastavení ShowValue = true. HasDataLabels nebylo nejprve nastaveno na řadě. Nastavte series.HasDataLabels = true, pak nakonfigurujte series.DataLabels.
Scaling.Maximum se nezdá, že by se aplikovalo. Potvrďte, že to nastavujete na správný objekt osy (chart.AxisY pro osu hodnot ve většině typů grafů) a že žádná dřívější cesta kódu neprovádí reset Scaling zpět na výchozí AxisBound().
Často kladené otázky
Jak skrýt legendu grafu?
Nastavte chart.Legend.Position = LegendPosition.None.
Jak mohu nastavit osu na konkrétní rozsah místo automatického škálování?
Nastavte AxisScaling.Minimum a/nebo AxisScaling.Maximum (obě hodnoty AxisBound) na chart.AxisX.Scaling nebo chart.AxisY.Scaling.
Jak skrýt název grafu, aniž bych jej smazal?
Nastavte chart.Title.Show = false. Objekt ChartTitle a jeho Text zůstávají; pouze viditelný popisek je potlačen.
Jaké typy grafů jsou k dispozici?
ChartType uvádí klasické rodiny (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, plus vrstvené a 3D varianty) vedle typů Word 2016 (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
Mohu formátovat jeden datový bod odlišně od zbytku jeho řady?
Ano — indexujte do ChartSeries.DataPoints a nastavte Format, Marker nebo Explosion příslušného ChartDataPoint nezávisle.