Jak pracować z wykresami w .NET

Jak pracować z wykresami w .NET

Ten przewodnik pokazuje, jak wstawić natywny wykres Worda i kontrolować jego wygląd za pomocą Aspose.Words FOSS dla .NET — ukrywając legendę i osie, ustalając skalę osi wartości, a następnie wybierając inny typ wykresu oraz formatując etykiety danych i poszczególne punkty. Aspose.Words FOSS dla .NET jest dostępny poprzez NuGet lub poprzez budowanie ze źródeł.

Przewodnik krok po kroku

Krok 1: Pobierz bibliotekę

Sklonuj repozytorium i zbuduj Aspose.Words.sln w konfiguracji Release, a następnie dodaj odwołanie projektu do Aspose.Words.csproj z własnego projektu .NET, jak opisano w przewodniku instalacji.


Krok 2: Wstaw wykres i uprość jego wygląd

DocumentBuilder.InsertChart(chartType, width, height) wstawia kształt wykresu w miejscu kursora i zwraca zawierający Shape; jego Chart property jest obiektem Chart, który konfiguruje się, z AxisX, AxisY, Legend i Title jako jego głównymi podobiektami. Typy wykresów znajdują się w przestrzeni nazw Aspose.Words.Drawing.Charts obok podstawowej przestrzeni nazw Aspose.Words. Minimalny, gotowy do prezentacji wykres ChartType.Bar na nowym Document często oznacza ustawienie Legend.Position na LegendPosition.None, ustawienie Hidden i HasMajorGridlines na AxisY i AxisX, ustawienie Title.Show na false, wyczyszczenie symbolu zastępczego ChartSeriesCollection za pomocą Series.Clear() przed wywołaniem Series.Add(seriesName, categories, values), przypięcie AxisY.Scaling.Maximum do stałego AxisBound zamiast pozwalać na automatyczną skalę, a następnie zapisanie wyniku za pomocą Document.Save. Pełny przykład — Document, DocumentBuilder, Chart, AxisX, AxisY, Legend, Title, ChartSeriesCollection, AxisBound i Document.Save — wygląda następująco:

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");

To buduje Document, wstawia ChartType.Bar wykres, ustawia Chart.Legend.Position na LegendPosition.None, aby ukryć legendę, ustawia Hidden = true i HasMajorGridlines = false na chart.AxisY oraz Hidden = true na chart.AxisX, ustawia chart.Title.Show = false, czyści serię zastępczą przy pomocy seriesColl.Clear(), ustawia oś wartości na maksymalny 100 poprzez chart.AxisY.Scaling.Maximum = new AxisBound(100), dodaje jedną prawdziwą serię przy użyciu seriesColl.Add(seriesName, categories, values) i zapisuje wynik przy pomocy Document.Save.


Krok 3: Wybierz inny typ wykresu

ChartType obejmuje standardowe rodziny wykresów Word — Line, Bar, Column (plus warianty Stacked, PercentStacked i 3D), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface oraz typy Word 2016 Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker i Waterfall. Przekaż żądaną wartość jako argument chartType do InsertChart — nie istnieje żaden element, który zmieni typ istniejącego wykresu po wstawieniu, więc wybierz właściwy od razu lub zamień kształt.


Krok 4: Dodaj i sformatuj etykiety danych

Ustaw series.HasDataLabels = true przed skonfigurowaniem series.DataLabels (a ChartDataLabelCollection) — jego przełączniki wyświetlania nie mają widocznego efektu, gdy etykiety są wyłączone. ShowValue, ShowCategoryName i ShowPercentage kontrolują, które informacje się pojawiają, a Position umieszcza je względem punktu danych.


Krok 5: Formatuj pojedynczy punkt danych

Zindeksuj DataPoints serii (a ChartDataPointCollection), aby dotrzeć do jednego ChartDataPoint i ustawić jego Format, Marker, Explosion lub InvertIfNegative niezależnie od reszty serii. Tak podkreślisz pojedynczy słupek, kawałek lub znacznik bez konieczności zmiany stylu całej serii.

Typowe problemy i rozwiązania

Nowy wykres wyświetla nieoczekiwane dane demonstracyjne. InsertChart wstawia do wykresu przykładowe serie. Wywołaj chart.Series.Clear() przed dodaniem własnych serii.

Hiding AxisY nie usuwa linii siatki. Hidden ukrywa linię osi i etykiety; linie siatki są osobnym przełącznikiem. Ustaw HasMajorGridlines = false (i HasMinorGridlines = false jeśli drobne linie siatki są również widoczne).

Etykiety danych nie pojawiają się po ustawieniu ShowValue = true. HasDataLabels nie zostało ustawione najpierw na serii. Ustaw series.HasDataLabels = true, a następnie skonfiguruj series.DataLabels.

Scaling.Maximum wydaje się nie mieć zastosowania. Upewnij się, że ustawiasz to na właściwym obiekcie osi (chart.AxisY dla osi wartości w większości typów wykresów) i że żaden wcześniejszy kod nie resetuje Scaling z powrotem do domyślnego AxisBound().

Najczęściej zadawane pytania

Jak ukryć legendę wykresu?

Ustaw chart.Legend.Position = LegendPosition.None.

Jak ustawić oś w określonym zakresie zamiast automatycznego skalowania?

Ustaw AxisScaling.Minimum i/lub AxisScaling.Maximum (obie wartości AxisBound) na chart.AxisX.Scaling lub chart.AxisY.Scaling.

Jak ukryć tytuł wykresu bez jego usuwania?

Ustaw chart.Title.Show = false. Obiekt ChartTitle i jego Text pozostają; tylko widoczny podpis jest ukryty.

Jakie typy wykresów są dostępne?

ChartType wymienia klasyczne rodziny (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, oraz warianty skumulowane i 3D) wraz z typami Word 2016 (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).

Czy mogę sformatować jeden punkt danych inaczej niż pozostałe w jego serii?

Tak — odwołaj się do ChartSeries.DataPoints i ustaw Format, Marker lub Explosion danego ChartDataPoint niezależnie.

Zobacz także

 Polski