Práce s grafy

Práce s grafy

Aspose.Words FOSS pro .NET může vložit nativní grafy Wordu — stejné DrawingML grafy, které Word sám vytváří — jako tvar v kreslicí vrstvě. DocumentBuilder.InsertChart vytvoří tvar a vrátí jej; vlastnost Chart tvaru zpřístupňuje řady, osy, legendu a formátování. Tento průvodce pokrývá vytváření grafu, výběr typu grafu, práci s řadami a datovými body, osy a mřížky a formátování prvků grafu.


Vytvoření grafu

Zavolejte DocumentBuilder.InsertChart(chartType, width, height) pro vložení tvaru grafu na pozici kurzoru a získáte zpět obsahující Shape. Jeho vlastnost Chart je objekt Chart, který konfigurujete. Čerstvě vložený graf obsahuje ukázkové řady zástupného textu, takže před přidáním skutečných dat vymažte Chart.Series pomocí 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");

Tento příklad vytvoří Document, použije DocumentBuilder.InsertChart(ChartType.Line, 432, 252) pro vložení tvaru čárového grafu, načte shape.Chart pro získání objektu Chart, zavolá chart.Series.Clear() pro odstranění řady zástupného textu, přidá jednu skutečnou řadu pomocí chart.Series.Add(seriesName, categories, values) a výsledek zapíše pomocí Document.Save.


Typy grafů

ChartType zahrnuje standardní rodiny grafů Wordu — Line, Bar, Column (plus jejich varianty Stacked, PercentStacked a 3D), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface a novější typy grafů Word 2016 Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker a Waterfall. Požadovanou hodnotu předáte jako argument chartType funkci InsertChart; není možné změnit typ existujícího grafu po vložení, jinak než nahrazením tvaru.


Řady a datové body

Chart.Series je ChartSeriesCollection ChartSeries objektů. Kromě výše použitého přetížení Add(seriesName, categories, values) má ChartSeriesCollection také přetížení pro páry hodnot X/Y, data a velikosti bublin, plus Insert, Remove(index) a Clear(). Každý ChartSeries poskytuje DataPoints (a ChartDataPointCollection) pro formátování na úrovni bodu — Format, Marker, Explosion a InvertIfNegative — a HasDataLabels / DataLabels pro zapnutí a nastavení ChartDataLabelCollection (ShowValue, ShowCategoryName, ShowPercentage, Position).


Osy a mřížky

Chart.AxisX, AxisY a AxisZ jsou ChartAxis objekty (s Chart.Axes jako ChartAxisCollection pro iteraci všech z nich). Každá osa má HasMajorGridlines / HasMinorGridlines, MajorUnit / MinorUnit (s odpovídajícími příznaky *IsAuto), Crosses / CrossesAt, CategoryType a TickLabels objekt (AxisTickLabels) pro písmo a orientaci popisků. ChartAxis.Title (ChartAxisTitle) nastavuje text popisku osy pomocí jejích vlastností Text a Show.


Legenda, název a datová tabulka

Chart.Title (ChartTitle) nastavuje celkový titulek grafu — Text, Show a Font. Chart.Legend (ChartLegend) řídí, zda a kde se legenda zobrazí pomocí Position (hodnota LegendPosition, jako například Bottom, Right nebo Top) a vystavuje jednotlivé LegendEntries. Chart.DataTable (ChartDataTable) může zobrazit podkladové hodnoty řad jako tabulku pod oblastí grafu, s Show, HasLegendKeys a přepínači okrajů.


Formátování prvků grafu

Většina prvků grafu — řady, datové body, osy, titulek i legenda — vystavuje vlastnost Format typu ChartFormat, která dále poskytuje Fill a Stroke pro barvy daného prvku, plus ShapeType (ChartShapeType) pro tvary značek datových bodů. ChartFormat.SetDefaultFill() obnoví prvek do výchozího vzhledu řízeného tématem.


Tipy a osvědčené postupy

  • Vždy vymažte nebo nahraďte řadu zástupného textu (chart.Series.Clear()) před přidáním skutečných dat — nově vložený graf již obsahuje ukázková data.
  • Používejte přetížení ChartSeriesCollection.Add, která odpovídají tvaru vašich dat (kategorie, páry X/Y, data nebo velikosti bublin), místo aby se vše tlačilo přes páry kategorie/hodnota.
  • Nastavte HasDataLabels = true na řadu před konfigurací její kolekce DataLabels — vlastnosti zobrazení kolekce nemají žádný viditelný efekt, pokud jsou popisky vypnuté.
  • Přečtěte si Chart.ChartSpace nebo zkontrolujte konkrétní ChartType, než se spolehnete na chování mřížky nebo osy, které se liší mezi klasickými grafy a grafy ve stylu Word-2016.
  • Upřednostněte ChartFormat.SetDefaultFill() před ručním mazáním každé vlastnosti výplně, když chcete resetovat vzhled prvku.

Časté problémy

ProblémPříčinaOprava
Nový graf zobrazuje neočekávaná demo dataInsertChart naplní graf zástupnou sériíZavolejte chart.Series.Clear() před přidáním vlastních sérií
Štítky dat se neobjevujíHasDataLabels nebylo nastaveno na sérii před konfigurací DataLabelsNastavte series.HasDataLabels = true, pak nakonfigurujte ShowValue/ShowCategoryName na series.DataLabels
Mřížky se nezobrazují na hodnotové oseHasMajorGridlines/HasMinorGridlines jsou ve výchozím nastavení false pro tuto osuNastavte chart.AxisY.HasMajorGridlines = true (a HasMinorGridlines, pokud je to potřeba)
Legenda se nezobrazujeChart.Legend.Position je nastaveno na LegendPosition.NoneNastavte Position na Bottom, Right, Top, Left nebo TopRight

FAQ

Jak vložit graf do dokumentu?

Zavolejte DocumentBuilder.InsertChart(chartType, width, height). Vrátí obsahující Shape; přečtěte jeho Chart vlastnost pro konfiguraci grafu.

Jak přidat data do grafu?

Vymažte sérii zástupného symbolu pomocí chart.Series.Clear(), pak zavolejte chart.Series.Add(seriesName, categories, values) (nebo jedno z ostatních Add přetížení pro data X/Y, datum nebo bublinová data).

Které typy grafů jsou k dispozici?

ChartType zahrnuje klasické rodiny (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, plus jejich vrstvené a 3D varianty) a typy grafů Word 2016 (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).

Jak změnit, kde se legenda zobrazuje?

Nastavte Chart.Legend.Position na LegendPosition hodnotu, například LegendPosition.Bottom nebo LegendPosition.Right.

Mohu formátovat jednotlivý datový bod odlišně od zbytku jeho řady?

Ano — indexujte do ChartSeries.DataPoints (a ChartDataPointCollection) a nastavte ChartDataPoint’s Format, Marker nebo Explosion nezávisle na formátování na úrovni řady.


API Reference Shrnutí

Třída/MetodaPopis:
DocumentBuilder.InsertChartVloží tvar grafu na pozici kurzoru a vrátí jej.
ChartObjekt konfigurace grafu, dosažitelný přes Shape.Chart.
ChartTypeVýčet dostupných typů grafů (čárový, sloupcový, koláčový a typy grafů Word-2016).
ChartSeriesCollection / ChartSeriesDatové řady grafu a metody pro jejich přidání, vložení nebo odebrání.
ChartDataPointCollection / ChartDataPointFormátování jednotlivých bodů v řadě.
ChartDataLabelCollection / ChartDataLabelŠtítky hodnot/kategorií zobrazované u bodů grafu.
ChartAxis / ChartAxisCollectionKonfigurace osy — mřížky, jednotky, průsečík, popisky značek.
ChartLegend / LegendPositionViditelnost a umístění legendy.
ChartTitleCelkový titulek grafu.
ChartDataTableVolitelná tabulka hodnot řad zobrazená pod oblastí grafu.
ChartFormatFormátování výplně, tahu a tvaru sdílené většinou prvků grafu.

Viz také:

 Čeština