Formatowanie wykresów w prezentacji w .NET

Przegląd

Ten artykuł wyjaśnia, jak formatować wykresy w prezentacjach PowerPoint przy użyciu Aspose.Slides. Pokazuje, jak dostosować kluczowe elementy wykresu, takie jak osie, linie siatki, tytuły, legendy, obszar wykresu i wypełnienia ścian, aby poprawić wygląd i czytelność danych wykresu. Pokazuje również, jak ustawić właściwości czcionki dla tekstu wykresu, zastosować wstępne i własne formaty liczbowe do danych wykresu oraz włączyć zaokrąglone rogi obszaru wykresu. Razem te przykłady pokazują, jak kontrolować zarówno styl wizualny, jak i prezentację danych wykresu w prezentacji.

Formatowanie elementów wykresu

Aspose.Slides for .NET pozwala programistom dodawać własne wykresy do slajdów od podstaw. Ten artykuł wyjaśnia, jak formatować różne elementy wykresu, w tym oś kategorii i oś wartości. Aspose.Slides for .NET udostępnia prosty interfejs API do zarządzania różnymi elementami wykresu i formatowania ich przy użyciu własnych wartości:

  1. Utwórz instancję klasy Presentation class.
  2. Uzyskaj odniesienie do slajdu za pomocą jego indeksu.
  3. Dodaj wykres z domyślnymi danymi wraz z wybranym typem (w tym przykładzie użyjemy ChartType.LineWithMarkers).
  4. Uzyskaj dostęp do osi wartości wykresu i ustaw następujące właściwości:
    1. Ustaw Line format dla głównych linii siatki osi wartości
    2. Ustaw Line format dla pobocznych linii siatki osi wartości
    3. Ustaw Number Format dla osi wartości
    4. Ustaw Min, Max, Major and Minor units dla osi wartości
    5. Ustaw Text Properties dla danych osi wartości
    6. Ustaw Title dla osi wartości
    7. Ustaw Line Format dla osi wartości
  5. Uzyskaj dostęp do osi kategorii wykresu i ustaw następujące właściwości:
    1. Ustaw Line format dla głównych linii siatki osi kategorii
    2. Ustaw Line format dla pobocznych linii siatki osi kategorii
    3. Ustaw Text Properties dla danych osi kategorii
    4. Ustaw Title dla osi kategorii
    5. Ustaw Label Positioning dla osi kategorii
    6. Ustaw Rotation Angle dla etykiet osi kategorii
  6. Uzyskaj dostęp do legendy wykresu i ustaw Text Properties dla niej
  7. Ustaw wyświetlanie legend wykresu bez nakładania się na wykres
  8. Uzyskaj dostęp do Secondary Value Axis wykresu i ustaw następujące właściwości:
    1. Włącz drugorzędną Value Axis
    2. Ustaw Line Format dla drugorzędnej osi wartości
    3. Ustaw Number Format dla drugorzędnej osi wartości
    4. Ustaw Min, Max, Major and Minor units dla drugorzędnej osi wartości
  9. Teraz narysuj pierwszą serię wykresu na drugorzędnej osi wartości
  10. Ustaw kolor wypełnienia tylnej ściany wykresu
  11. Ustaw kolor wypełnienia obszaru wykresu
  12. Zapisz zmodyfikowaną prezentację do pliku PPTX
// Tworzenie prezentacji// Tworzenie prezentacji
Presentation pres = new Presentation();

// Uzyskiwanie pierwszego slajdu
ISlide slide = pres.Slides[0];

// Dodawanie przykładowego wykresu
IChart chart = slide.Shapes.AddChart(ChartType.LineWithMarkers, 50, 50, 500, 400);

// Ustawianie tytułu wykresu
chart.HasTitle = true;
chart.ChartTitle.AddTextFrameForOverriding("");
IPortion chartTitle = chart.ChartTitle.TextFrameForOverriding.Paragraphs[0].Portions[0];
chartTitle.Text = "Sample Chart";
chartTitle.PortionFormat.FillFormat.FillType = FillType.Solid;
chartTitle.PortionFormat.FillFormat.SolidFillColor.Color = Color.Gray;
chartTitle.PortionFormat.FontHeight = 20;
chartTitle.PortionFormat.FontBold = NullableBool.True;
chartTitle.PortionFormat.FontItalic = NullableBool.True;

// Ustawianie formatu głównych linii siatki dla osi wartości
chart.Axes.VerticalAxis.MajorGridLinesFormat.Line.FillFormat.FillType = FillType.Solid;
chart.Axes.VerticalAxis.MajorGridLinesFormat.Line.FillFormat.SolidFillColor.Color = Color.Blue;
chart.Axes.VerticalAxis.MajorGridLinesFormat.Line.Width = 5;
chart.Axes.VerticalAxis.MajorGridLinesFormat.Line.DashStyle = LineDashStyle.DashDot;

// Ustawianie formatu pobocznych linii siatki dla osi wartości
chart.Axes.VerticalAxis.MinorGridLinesFormat.Line.FillFormat.FillType = FillType.Solid;
chart.Axes.VerticalAxis.MinorGridLinesFormat.Line.FillFormat.SolidFillColor.Color = Color.Red;
chart.Axes.VerticalAxis.MinorGridLinesFormat.Line.Width = 3;

// Ustawianie formatu liczbowego osi wartości
chart.Axes.VerticalAxis.IsNumberFormatLinkedToSource = false;
chart.Axes.VerticalAxis.DisplayUnit = DisplayUnitType.Thousands;
chart.Axes.VerticalAxis.NumberFormat = "0.0%";

// Ustawianie maksymalnych i minimalnych wartości wykresu
chart.Axes.VerticalAxis.IsAutomaticMajorUnit = false;
chart.Axes.VerticalAxis.IsAutomaticMaxValue = false;
chart.Axes.VerticalAxis.IsAutomaticMinorUnit = false;
chart.Axes.VerticalAxis.IsAutomaticMinValue = false;

chart.Axes.VerticalAxis.MaxValue = 15f;
chart.Axes.VerticalAxis.MinValue = -2f;
chart.Axes.VerticalAxis.MinorUnit = 0.5f;
chart.Axes.VerticalAxis.MajorUnit = 2.0f;

// Ustawianie właściwości tekstu osi wartości
IChartPortionFormat txtVal = chart.Axes.VerticalAxis.TextFormat.PortionFormat;
txtVal.FontBold = NullableBool.True;
txtVal.FontHeight = 16;
txtVal.FontItalic = NullableBool.True;
txtVal.FillFormat.FillType = FillType.Solid; ;
txtVal.FillFormat.SolidFillColor.Color = Color.DarkGreen;
txtVal.LatinFont = new FontData("Times New Roman");

// Ustawianie tytułu osi wartości
chart.Axes.VerticalAxis.HasTitle = true;
chart.Axes.VerticalAxis.Title.AddTextFrameForOverriding("");
IPortion valtitle = chart.Axes.VerticalAxis.Title.TextFrameForOverriding.Paragraphs[0].Portions[0];
valtitle.Text = "Primary Axis";
valtitle.PortionFormat.FillFormat.FillType = FillType.Solid;
valtitle.PortionFormat.FillFormat.SolidFillColor.Color = Color.Gray;
valtitle.PortionFormat.FontHeight = 20;
valtitle.PortionFormat.FontBold = NullableBool.True;
valtitle.PortionFormat.FontItalic = NullableBool.True;

// Ustawianie formatu linii osi wartości : Now Obselete
// chart.Axes.VerticalAxis.aVerticalAxis.l.AxisLine.Width = 10;
// chart.Axes.VerticalAxis.AxisLine.FillFormat.FillType = FillType.Solid;
// Chart.Axes.VerticalAxis.AxisLine.FillFormat.SolidFillColor.Color = Color.Red;

// Ustawianie formatu głównych linii siatki dla osi kategorii
chart.Axes.HorizontalAxis.MajorGridLinesFormat.Line.FillFormat.FillType = FillType.Solid;
chart.Axes.HorizontalAxis.MajorGridLinesFormat.Line.FillFormat.SolidFillColor.Color = Color.Green;
chart.Axes.HorizontalAxis.MajorGridLinesFormat.Line.Width = 5;

// Ustawianie formatu pobocznych linii siatki dla osi kategorii
chart.Axes.HorizontalAxis.MinorGridLinesFormat.Line.FillFormat.FillType = FillType.Solid;
chart.Axes.HorizontalAxis.MinorGridLinesFormat.Line.FillFormat.SolidFillColor.Color = Color.Yellow;
chart.Axes.HorizontalAxis.MinorGridLinesFormat.Line.Width = 3;

// Ustawianie właściwości tekstu osi kategorii
IChartPortionFormat txtCat = chart.Axes.HorizontalAxis.TextFormat.PortionFormat;
txtCat.FontBold = NullableBool.True;
txtCat.FontHeight = 16;
txtCat.FontItalic = NullableBool.True;
txtCat.FillFormat.FillType = FillType.Solid; ;
txtCat.FillFormat.SolidFillColor.Color = Color.Blue;
txtCat.LatinFont = new FontData("Arial");

// Ustawianie tytułu osi kategorii
chart.Axes.HorizontalAxis.HasTitle = true;
chart.Axes.HorizontalAxis.Title.AddTextFrameForOverriding("");

IPortion catTitle = chart.Axes.HorizontalAxis.Title.TextFrameForOverriding.Paragraphs[0].Portions[0];
catTitle.Text = "Sample Category";
catTitle.PortionFormat.FillFormat.FillType = FillType.Solid;
catTitle.PortionFormat.FillFormat.SolidFillColor.Color = Color.Gray;
catTitle.PortionFormat.FontHeight = 20;
catTitle.PortionFormat.FontBold = NullableBool.True;
catTitle.PortionFormat.FontItalic = NullableBool.True;

// Ustawianie pozycji etykiet osi kategorii
chart.Axes.HorizontalAxis.TickLabelPosition = TickLabelPositionType.Low;

// Ustawianie kąta obrotu etykiet osi kategorii
chart.Axes.HorizontalAxis.TickLabelRotationAngle = 45;

// Ustawianie właściwości tekstu legend
IChartPortionFormat txtleg = chart.Legend.TextFormat.PortionFormat;
txtleg.FontBold = NullableBool.True;
txtleg.FontHeight = 16;
txtleg.FontItalic = NullableBool.True;
txtleg.FillFormat.FillType = FillType.Solid; ;
txtleg.FillFormat.SolidFillColor.Color = Color.DarkRed;

// Ustaw wyświetlanie legend wykresu bez nachodzenia na wykres

chart.Legend.Overlay = true;
            
            // Rysowanie pierwszej serii na drugorzędnej osi wartości
// Chart.ChartData.Series[0].PlotOnSecondAxis = true;

// Ustawianie koloru tylnej ścianki wykresu
chart.BackWall.Thickness = 1;
chart.BackWall.Format.Fill.FillType = FillType.Solid;
chart.BackWall.Format.Fill.SolidFillColor.Color = Color.Orange;

chart.Floor.Format.Fill.FillType = FillType.Solid;
chart.Floor.Format.Fill.SolidFillColor.Color = Color.Red;
// Ustawianie koloru obszaru wykresu
chart.PlotArea.Format.Fill.FillType = FillType.Solid;
chart.PlotArea.Format.Fill.SolidFillColor.Color = Color.LightCyan;

// Zapisz prezentację
pres.Save("FormattedChart_out.pptx", SaveFormat.Pptx);

Ustaw właściwości czcionki dla wykresu

Aspose.Slides for .NET zapewnia wsparcie w ustawianiu właściwości czcionki dla wykresu. Proszę postępować zgodnie z poniższymi krokami, aby ustawić właściwości czcionki wykresu.

  • Utwórz obiekt klasy Presentation.
  • Dodaj wykres na slajdzie.
  • Ustaw wysokość czcionki.
  • Zapisz zmodyfikowaną prezentację.

Poniżej znajduje się przykładowy kod.

using (Presentation pres = new Presentation())
{               
    IChart chart = pres.Slides[0].Shapes.AddChart(ChartType.ClusteredColumn, 100, 100, 500, 400);
    chart.TextFormat.PortionFormat.FontHeight = 20;
    chart.ChartData.Series[0].Labels.DefaultDataLabelFormat.ShowValue = true;
    pres.Save("FontPropertiesForChart.pptx", SaveFormat.Pptx);
}

Ustaw format liczbowy

Aspose.Slides for .NET udostępnia prosty interfejs API do zarządzania formatem danych wykresu:

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj odniesienie do slajdu za pomocą jego indeksu.
  3. Dodaj wykres z domyślnymi danymi wraz z wybranym typem (w tym przykładzie użyto ChartType.ClusteredColumn).
  4. Ustaw wstępny format liczbowy spośród dostępnych wartości wstępnych.
  5. Przejdź przez komórki danych wykresu w każdej serii wykresu i ustaw format liczbowy danych wykresu.
  6. Zapisz prezentację.
  7. Ustaw własny format liczbowy.
  8. Przejdź przez komórki danych wykresu w każdej serii i ustaw inny format liczbowy danych wykresu.
  9. Zapisz prezentację.
// Utwórz prezentację// Utwórz prezentację
Presentation pres = new Presentation();

// Uzyskaj dostęp do pierwszego slajdu prezentacji
ISlide slide = pres.Slides[0];

// Dodawanie domyślnego wykresu słupkowego skumulowanego
IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 50, 50, 500, 400);

// Uzyskanie kolekcji serii wykresu
IChartSeriesCollection series = chart.ChartData.Series;

// Ustawianie wstępnego formatu liczbowego
// Przejście przez każdą serię wykresu
foreach (ChartSeries ser in series)
{
    // Przejście przez każdą komórkę danych w serii
    foreach (IChartDataPoint cell in ser.DataPoints)
    {
        // Ustawianie formatu liczbowego
        cell.Value.AsCell.PresetNumberFormat = 10; //0.00%
    }
}

// Zapis prezentacji
pres.Save("PresetNumberFormat_out.pptx", SaveFormat.Pptx);

The possible preset number format values along with their preset index and that can be used are given below:

0 General
1 0
2 0.00
3 #,##0
4 #,##0.00
5 $#,##0;$-#,##0
6 $#,##0;Red$-#,##0
7 $#,##0.00;$-#,##0.00
8 $#,##0.00;Red$-#,##0.00
9 0%
10 0.00%
11 0.00E+00
12 # ?/?
13 # /
14 m/d/yy
15 d-mmm-yy
16 d-mmm
17 mmm-yy
18 h:mm AM/PM
19 h:mm:ss AM/PM
20 h:mm
21 h:mm:ss
22 m/d/yy h:mm
37 #,##0;-#,##0
38 #,##0;Red-#,##0
39 #,##0.00;-#,##0.00
40 #,##0.00;Red-#,##0.00
41 _ * #,##0_ ;_ * “_ ;_ @_
42 _ $* #,##0_ ;_ $* “_ ;_ @_
43 _ * #,##0.00_ ;_ * “??_ ;_ @_
44 _ $* #,##0.00_ ;_ $* “??_ ;_ @_
45 mm:ss
46 h:mm:ss
47 mm:ss.0
48 ##0.0E+00
49 @

Ustaw zaokrąglone krawędzie obszaru wykresu

Aspose.Slides for .NET zapewnia wsparcie w ustawianiu obszaru wykresu. Dodano właściwości IChart.HasRoundedCorners i Chart.HasRoundedCorners w Aspose.Slides.

  1. Utwórz obiekt klasy Presentation.
  2. Dodaj wykres na slajdzie.
  3. Ustaw typ wypełnienia i kolor wypełnienia wykresu
  4. Ustaw właściwość zaokrąglonych rogów na True.
  5. Zapisz zmodyfikowaną prezentację.

Poniżej znajduje się przykładowy kod.

using (Presentation presentation = new Presentation())
{
	ISlide slide = presentation.Slides[0];
	IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 20, 100, 600, 400);
	chart.LineFormat.FillFormat.FillType = FillType.Solid;
	chart.LineFormat.Style = LineStyle.Single;
	chart.HasRoundedCorners = true;

	presentation.Save("out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}

FAQ

Czy mogę ustawić półprzezroczyste wypełnienia dla kolumn/obszarów, pozostawiając obramowanie nieprzezroczyste?

Tak. Przezroczystość wypełnienia i obramowanie są konfigurowane osobno. Jest to przydatne do poprawy czytelności siatki i danych w gęstych wizualizacjach.

Jak radzić sobie z etykietami danych, gdy zachodzą na siebie?

Zmniejsz rozmiar czcionki, wyłącz nieistotne elementy etykiet (np. kategorie), ustaw offset/pozycję etykiety, wyświetlaj etykiety tylko dla wybranych punktów w razie potrzeby lub zmień format na „wartość + legenda”.

Czy mogę zastosować wypełnienia gradientowe lub wzorcowe do serii?

Tak. Zarówno jednolite, jak i wypełnienia gradientowe/wzorcowe są zwykle dostępne. W praktyce używaj gradientów oszczędnie i unikaj kombinacji, które zmniejszają kontrast względem siatki i tekstu.