Форматирование диаграмм

Форматирование элементов диаграммы

Aspose.Slides для C++ позволяет разработчикам добавлять на свои слайды кастомные диаграммы с нуля. В этой статье объясняется, как форматировать различные элементы диаграммы, включая категориальную и значенческую оси.

Aspose.Slides для C++ предоставляет простой API для управления различными элементами диаграммы и их форматирования с использованием пользовательских значений:

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте диаграмму с данными по умолчанию любого желаемого типа (в этом примере мы будем использовать ChartType.LineWithMarkers).
  4. Получите доступ к значенческой оси диаграммы и установите следующие свойства:
    1. Установка формата линии для главных сеточных линий значенческой оси
    2. Установка формата линии для второстепенных сеточных линий значенческой оси
    3. Установка формата числа для значенческой оси
    4. Установка минимальных, максимальных, главных и второстепенных единиц для значенческой оси
    5. Установка свойств текста для значенческой оси
    6. Установка заголовка для значенческой оси
    7. Установка формата линии для значенческой оси
  5. Получите доступ к категориальной оси диаграммы и установите следующие свойства:
    1. Установка формата линии для главных сеточных линий категориальной оси
    2. Установка формата линии для второстепенных сеточных линий категориальной оси
    3. Установка свойств текста для категориальной оси
    4. Установка заголовка для категориальной оси
    5. Установка позиционирования меток для категориальной оси
    6. Установка угла вращения для меток категориальной оси
  6. Получите доступ к легенде диаграммы и установите для нее свойства текста
  7. Установите отображение легенд диаграммы без перекрытия
  8. Получите доступ к вторичной значенческой оси диаграммы и установите следующие свойства:
    1. Включите вторичную значенческую ось
    2. Установка формата линии для вторичной значенческой оси
    3. Установка формата числа для вторичной значенческой оси
    4. Установка минимальных, максимальных, главных и второстепенных единиц для вторичной значенческой оси
  9. Теперь построить первую серию диаграммы на вторичной значенческой оси
  10. Установите цвет заливки для задней стены диаграммы
  11. Установите цвет заливки для области построения диаграммы
  12. Запишите измененную презентацию в файл PPTX
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String outPath = u"../out/FormatChart_out.pptx";
//Instantiate Presentation class that represents PPTX file
SharedPtr<Presentation> pres = MakeObject<Presentation>();
//Access first slide
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Add chart with default data
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::LineWithMarkers, 0, 0, 500, 500);
// Setting Chart Titile
chart->set_HasTitle(true);
chart->get_ChartTitle()->AddTextFrameForOverriding(u"");
SharedPtr<IPortion> chartTitle = chart->get_ChartTitle()->get_TextFrameForOverriding()->get_Paragraphs()->idx_get(0)->get_Portions()->idx_get(0);
chartTitle->set_Text(u"Sample Chart");
chartTitle->get_PortionFormat()->get_FillFormat()->set_FillType (FillType::Solid);
chartTitle->get_PortionFormat()->get_FillFormat()->get_SolidFillColor()->set_Color (System::Drawing::Color::get_Gray());
chartTitle->get_PortionFormat()->set_FontHeight ( 20);
chartTitle->get_PortionFormat()->set_FontBold ( NullableBool::True);
chartTitle->get_PortionFormat()->set_FontItalic ( NullableBool::True);
// Setting Major grid lines format for value axis
chart->get_Axes()->get_VerticalAxis()->get_MajorGridLinesFormat()->get_Line()->get_FillFormat()->set_FillType (FillType::Solid);
chart->get_Axes()->get_VerticalAxis()->get_MajorGridLinesFormat()->get_Line()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Blue());
chart->get_Axes()->get_VerticalAxis()->get_MajorGridLinesFormat()->get_Line()->set_Width ( 5);
chart->get_Axes()->get_VerticalAxis()->get_MajorGridLinesFormat()->get_Line()->set_DashStyle (LineDashStyle::DashDot);
// Setting Minor grid lines format for value axis
chart->get_Axes()->get_VerticalAxis()->get_MinorGridLinesFormat()->get_Line()->get_FillFormat()->set_FillType(Aspose::Slides::FillType::Solid);
chart->get_Axes()->get_VerticalAxis()->get_MinorGridLinesFormat()->get_Line()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
chart->get_Axes()->get_VerticalAxis()->get_MinorGridLinesFormat()->get_Line()->set_Width(3);
// Setting value axis number format
chart->get_Axes()->get_VerticalAxis()->set_IsNumberFormatLinkedToSource ( false);
chart->get_Axes()->get_VerticalAxis()->set_DisplayUnit ( DisplayUnitType::Thousands);
chart->get_Axes()->get_VerticalAxis()->set_NumberFormat(u"0.0%");
// Setting chart maximum, minimum values
chart->get_Axes()->get_VerticalAxis()->set_IsAutomaticMajorUnit(false);
chart->get_Axes()->get_VerticalAxis()->set_IsAutomaticMaxValue(false);
chart->get_Axes()->get_VerticalAxis()->set_IsAutomaticMinorUnit(false);
chart->get_Axes()->get_VerticalAxis()->set_IsAutomaticMinValue(false);
chart->get_Axes()->get_VerticalAxis()->set_MaxValue (15);
chart->get_Axes()->get_VerticalAxis()->set_MinValue ( -2);
chart->get_Axes()->get_VerticalAxis()->set_MinorUnit ( 0.5);
chart->get_Axes()->get_VerticalAxis()->set_MajorUnit ( 2.0);
// Setting Value Axis Text Properties
SharedPtr<IChartPortionFormat> txtVal = chart->get_Axes()->get_VerticalAxis()->get_TextFormat()->get_PortionFormat();
txtVal->set_FontBold ( NullableBool::True);
txtVal->set_FontHeight( 16);
txtVal->set_FontItalic ( NullableBool::True);
txtVal->get_FillFormat()->set_FillType ( FillType::Solid) ;
txtVal->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing:: Color::get_DarkGreen());
SharedPtr<FontData> fontData = MakeObject<FontData>(u"Times New Roman");
//FontDataFactory.CreateFontData //txtVal->set_LatinFont(MakeObject<IFontData>(u"Times New Roman"));
txtVal->set_LatinFont(fontData);
// Setting value axis title
chart->get_Axes()->get_VerticalAxis()->set_HasTitle(true);
chart->get_Axes()->get_VerticalAxis()->get_Title()->AddTextFrameForOverriding(u"");
SharedPtr<IPortion> valtitle = chart->get_Axes()->get_VerticalAxis()->get_Title()->get_TextFrameForOverriding()->get_Paragraphs()->idx_get(0)->get_Portions()->idx_get(0);
valtitle->set_Text(u"Primary Axis");
valtitle->get_PortionFormat()->get_FillFormat()->set_FillType( FillType::Solid);
valtitle->get_PortionFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Gray());
valtitle->get_PortionFormat()->set_FontHeight ( 20);
valtitle->get_PortionFormat()->set_FontBold (NullableBool::True);
valtitle->get_PortionFormat()->set_FontItalic ( NullableBool::True);
// Setting Major grid lines format for Category axis
chart->get_Axes()->get_HorizontalAxis()->get_MajorGridLinesFormat()->get_Line()->get_FillFormat()->set_FillType ( FillType::Solid);
chart->get_Axes()->get_HorizontalAxis()->get_MajorGridLinesFormat()->get_Line()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Green());
chart->get_Axes()->get_HorizontalAxis()->get_MajorGridLinesFormat()->get_Line()->set_Width( 5);
// Setting Minor grid lines format for Category axis
chart->get_Axes()->get_HorizontalAxis()->get_MinorGridLinesFormat()->get_Line()->get_FillFormat()->set_FillType(FillType::Solid);
chart->get_Axes()->get_HorizontalAxis()->get_MinorGridLinesFormat()->get_Line()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Yellow());
chart->get_Axes()->get_HorizontalAxis()->get_MinorGridLinesFormat()->get_Line()->set_Width(3);
// Setting Category Axis Text Properties
SharedPtr<IChartPortionFormat> txtCat = chart->get_Axes()->get_HorizontalAxis()->get_TextFormat()->get_PortionFormat();
txtCat->set_FontBold (NullableBool::True);
txtCat->set_FontHeight ( 16);
txtCat->set_FontItalic ( NullableBool::True);
txtCat->get_FillFormat()->set_FillType( FillType::Solid) ;
txtCat->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Blue());
SharedPtr<FontData> Arial = MakeObject<FontData>(u"Arial");
txtCat->set_LatinFont(Arial);
// Setting Category Titile
chart->get_Axes()->get_HorizontalAxis()->set_HasTitle ( true);
chart->get_Axes()->get_HorizontalAxis()->get_Title()->AddTextFrameForOverriding(u"");
SharedPtr<IPortion> catTitle = chart->get_Axes()->get_HorizontalAxis()->get_Title()->get_TextFrameForOverriding()->get_Paragraphs()->idx_get(0)->get_Portions()->idx_get(0);
catTitle->set_Text(u"Sample Category");
catTitle->get_PortionFormat()->get_FillFormat()->set_FillType(FillType::Solid);
catTitle->get_PortionFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Gray());
catTitle->get_PortionFormat()->set_FontHeight( 20);
catTitle->get_PortionFormat()->set_FontBold (NullableBool::True);
catTitle->get_PortionFormat()->set_FontItalic ( NullableBool::True);
// Setting category axis lable position
chart->get_Axes()->get_HorizontalAxis()->set_TickLabelPosition( TickLabelPositionType::Low);
// Setting category axis lable rotation angle
chart->get_Axes()->get_HorizontalAxis()->set_TickLabelRotationAngle ( 45);
// Setting Legends Text Properties
SharedPtr<IChartPortionFormat> txtleg = chart->get_Legend()->get_TextFormat()->get_PortionFormat();
txtleg->set_FontBold ( NullableBool::True);
txtleg->set_FontHeight ( 16);
txtleg->set_FontItalic (NullableBool::True);
txtleg->get_FillFormat()->set_FillType (FillType::Solid) ;
txtleg->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_DarkRed());
// Set show chart legends without overlapping chart
chart->get_Legend()->set_Overlay( true);
// Ploting first series on secondary value axis
// Chart.ChartData.Series[0].PlotOnSecondAxis = true;
// Setting chart back wall color
chart->get_BackWall()->set_Thickness( 1);
chart->get_BackWall()->get_Format()->get_Fill()->set_FillType( FillType::Solid);
chart->get_BackWall()->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Orange());
chart->get_Floor()->get_Format()->get_Fill()->set_FillType(FillType::Solid);
chart->get_Floor()->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
// Setting Plot area color
chart->get_PlotArea()->get_Format()->get_Fill()->set_FillType(FillType::Solid);
chart->get_PlotArea()->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_LightCyan());
// Write the presentation file to disk
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Установка свойств шрифта для диаграммы

Aspose.Slides для C++ предоставляет поддержку установки свойств, связанных с шрифтом, для диаграммы. Пожалуйста, следуйте приведенным ниже шагам для установки свойств шрифта для диаграммы.

  • Создайте объект класса Presentation.
  • Добавьте диаграмму на слайд.
  • Установите высоту шрифта.
  • Сохраните измененную презентацию.

Ниже приведен пример.

// The path to the documents directory.
const String outPath = u"../out/FontPropertiesForChart.pptx";
//Instantiate Presentation class that represents PPTX file
SharedPtr<Presentation> pres = MakeObject<Presentation>();
SharedPtr<IChart> chart = pres->get_Slides()->idx_get(0)->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ClusteredColumn, 100, 100, 500, 400);
chart->get_TextFormat()->get_PortionFormat()->set_FontHeight(20);
chart->get_ChartData()->get_Series()->idx_get(0)->get_Labels()->get_DefaultDataLabelFormat()->set_ShowValue(true);
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Установка свойств шрифта для таблицы данных диаграммы

Aspose.Slides для C++ предоставляет поддержку изменения цвета категорий в цвете серии.

  1. Создайте объект класса Presentation.
  2. Добавьте диаграмму на слайд.
  3. Установите таблицу диаграммы.
  4. Установите высоту шрифта.
  5. Сохраните измененную презентацию.

Ниже приведен пример.

For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String outPath = u"../out/SettingFontPropertiesForChartDataTable_out.pptx";
//Instantiate Presentation class that represents PPTX file
SharedPtr<Presentation> pres = MakeObject<Presentation>();
//Access first slide
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Add chart with default data
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ClusteredColumn, 0, 0, 500, 500);
//Setting chart data table
chart->set_HasDataTable(true);
//Setting font properties
chart->get_ChartDataTable()->get_TextFormat()->get_PortionFormat()->set_FontBold (NullableBool::True);
chart->get_ChartDataTable()->get_TextFormat()->get_PortionFormat()->set_FontHeight ( 20);
// Write the presentation file to disk
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Установка закругленных границ области диаграммы

Aspose.Slides для C++ предоставляет поддержку установки области диаграммы. Свойства IChart.HasRoundedCorners и Chart.HasRoundedCorners были добавлены в Aspose.Slides.

  1. Создайте объект класса Presentation.
  2. Добавьте диаграмму на слайд.
  3. Установите тип заливки и цвет заливки диаграммы.
  4. Установите свойство круглого угла в True.
  5. Сохраните измененную презентацию.

Ниже приведен пример.

For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String outPath = u"../out/SettingChartAreaRoundedBorders_out.pptx";
//Instantiate Presentation class that represents PPTX file
SharedPtr<Presentation> pres = MakeObject<Presentation>();
//Access first slide
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Add chart with default data
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ClusteredColumn, 0, 0, 500, 500);
chart->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
chart->get_LineFormat()->set_Style(LineStyle::Single);
chart->set_HasRoundedCorners ( true);
// Write the presentation file to disk
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Установка чисел данных диаграммы

Aspose.Slides для C++ предоставляет простой API для управления форматом данных диаграммы:

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте диаграмму с данными по умолчанию любого желаемого типа (в этом примере используется ChartType.ClusteredColumn).
  4. Установите предустановленный формат числа из возможных предустановленных значений.
  5. Пройдитесь по ячейкам данных диаграммы в каждой серии диаграммы и установите формат числа данных диаграммы.
  6. Сохраните презентацию.
  7. Установите пользовательский формат числа.
  8. Пройдитесь по ячейкам данных диаграммы в каждой серии и установите другой формат числа данных диаграммы.
  9. Сохраните презентацию.
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String outPath = u"../out/NumberFormat_out.pptx";
//Instantiate Presentation class that represents PPTX file
SharedPtr<Presentation> pres = MakeObject<Presentation>();
//Access first slide
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Add chart with default data
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ClusteredColumn, 0, 0, 500, 500);
// Accessing the chart series collection
SharedPtr<IChartSeriesCollection> seriesCollection = chart->get_ChartData()->get_Series();
// Setting the preset number format
// Traverse through every chart series
for(int i = 0; i < seriesCollection->get_Count();i++)
{
auto series = seriesCollection->idx_get(i);
// Traverse through every data cell in series
for(int j=0;j<series->get_DataPoints()->get_Count();j++)
{
auto cell = series->get_DataPoints()->idx_get(j);
// Setting the number format
cell->get_Value()->get_AsCell()->set_PresetNumberFormat (10); //0.00%
}
}
// Write the presentation file to disk
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
  Возможные предустановленные значения формата числа с их индексом и теми, которые можно использовать, приведены ниже:
0 Общий
1 0
2 0.00
3 #,##0
4 #,##0.00
5 $#,##0;$-#,##0
6 $#,##0;Красный$-#,##0
7 $#,##0.00;$-#,##0.00
8 $#,##0.00;Красный$-#,##0.00
9 0%
10 0.00%
11 0.00E+00
12 # ?/?
13 # /
14 м/д/гг
15 д-ммм-гг
16 д-ммм
17 ммм-гг
18 ч:мм ДП/ПМ
19 ч:мм:сс ДП/ПМ
20 ч:мм
21 ч:мм:сс
22 м/д/гг ч:мм
37 #,##0;-#,##0
38 #,##0;Красный-#,##0
39 #,##0.00;-#,##0.00
40 #,##0.00;Красный-#,##0.00
41 _ * #,##0_ ;_ * “_ ;_ @_
42 _ $* #,##0_ ;_ $* “_ ;_ @_
43 _ * #,##0.00_ ;_ * “??_ ;_ @_
44 _ $* #,##0.00_ ;_ $* “??_ ;_ @_
45 мм:сс
46 ч :мм:сс
47 мм:сс.0
48 ##0.0E+00
49 @