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.