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 = truena řadu před konfigurací její kolekceDataLabels— vlastnosti zobrazení kolekce nemají žádný viditelný efekt, pokud jsou popisky vypnuté. - Přečtěte si
Chart.ChartSpacenebo 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ém | Příčina | Oprava |
|---|---|---|
| Nový graf zobrazuje neočekávaná demo data | InsertChart 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í DataLabels | Nastavte series.HasDataLabels = true, pak nakonfigurujte ShowValue/ShowCategoryName na series.DataLabels |
| Mřížky se nezobrazují na hodnotové ose | HasMajorGridlines/HasMinorGridlines jsou ve výchozím nastavení false pro tuto osu | Nastavte chart.AxisY.HasMajorGridlines = true (a HasMinorGridlines, pokud je to potřeba) |
| Legenda se nezobrazuje | Chart.Legend.Position je nastaveno na LegendPosition.None | Nastavte 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/Metoda | Popis: |
|---|---|
DocumentBuilder.InsertChart | Vloží tvar grafu na pozici kurzoru a vrátí jej. |
Chart | Objekt konfigurace grafu, dosažitelný přes Shape.Chart. |
ChartType | Výčet dostupných typů grafů (čárový, sloupcový, koláčový a typy grafů Word-2016). |
ChartSeriesCollection / ChartSeries | Datové řady grafu a metody pro jejich přidání, vložení nebo odebrání. |
ChartDataPointCollection / ChartDataPoint | Formátování jednotlivých bodů v řadě. |
ChartDataLabelCollection / ChartDataLabel | Štítky hodnot/kategorií zobrazované u bodů grafu. |
ChartAxis / ChartAxisCollection | Konfigurace osy — mřížky, jednotky, průsečík, popisky značek. |
ChartLegend / LegendPosition | Viditelnost a umístění legendy. |
ChartTitle | Celkový titulek grafu. |
ChartDataTable | Volitelná tabulka hodnot řad zobrazená pod oblastí grafu. |
ChartFormat | Formátování výplně, tahu a tvaru sdílené většinou prvků grafu. |