Форматирование диаграмм
Форматирование элементов диаграммы
Aspose.Slides для C++ позволяет разработчикам добавлять на свои слайды кастомные диаграммы с нуля. В этой статье объясняется, как форматировать различные элементы диаграммы, включая категориальную и значенческую оси.
Aspose.Slides для C++ предоставляет простой API для управления различными элементами диаграммы и их форматирования с использованием пользовательских значений:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте диаграмму с данными по умолчанию любого желаемого типа (в этом примере мы будем использовать ChartType.LineWithMarkers).
- Получите доступ к значенческой оси диаграммы и установите следующие свойства:
- Установка формата линии для главных сеточных линий значенческой оси
- Установка формата линии для второстепенных сеточных линий значенческой оси
- Установка формата числа для значенческой оси
- Установка минимальных, максимальных, главных и второстепенных единиц для значенческой оси
- Установка свойств текста для значенческой оси
- Установка заголовка для значенческой оси
- Установка формата линии для значенческой оси
- Получите доступ к категориальной оси диаграммы и установите следующие свойства:
- Установка формата линии для главных сеточных линий категориальной оси
- Установка формата линии для второстепенных сеточных линий категориальной оси
- Установка свойств текста для категориальной оси
- Установка заголовка для категориальной оси
- Установка позиционирования меток для категориальной оси
- Установка угла вращения для меток категориальной оси
- Получите доступ к легенде диаграммы и установите для нее свойства текста
- Установите отображение легенд диаграммы без перекрытия
- Получите доступ к вторичной значенческой оси диаграммы и установите следующие свойства:
- Включите вторичную значенческую ось
- Установка формата линии для вторичной значенческой оси
- Установка формата числа для вторичной значенческой оси
- Установка минимальных, максимальных, главных и второстепенных единиц для вторичной значенческой оси
- Теперь построить первую серию диаграммы на вторичной значенческой оси
- Установите цвет заливки для задней стены диаграммы
- Установите цвет заливки для области построения диаграммы
- Запишите измененную презентацию в файл 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++ предоставляет поддержку изменения цвета категорий в цвете серии.
- Создайте объект класса Presentation.
- Добавьте диаграмму на слайд.
- Установите таблицу диаграммы.
- Установите высоту шрифта.
- Сохраните измененную презентацию.
Ниже приведен пример.
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.
- Создайте объект класса Presentation.
- Добавьте диаграмму на слайд.
- Установите тип заливки и цвет заливки диаграммы.
- Установите свойство круглого угла в True.
- Сохраните измененную презентацию.
Ниже приведен пример.
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 для управления форматом данных диаграммы:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте диаграмму с данными по умолчанию любого желаемого типа (в этом примере используется ChartType.ClusteredColumn).
- Установите предустановленный формат числа из возможных предустановленных значений.
- Пройдитесь по ячейкам данных диаграммы в каждой серии диаграммы и установите формат числа данных диаграммы.
- Сохраните презентацию.
- Установите пользовательский формат числа.
- Пройдитесь по ячейкам данных диаграммы в каждой серии и установите другой формат числа данных диаграммы.
- Сохраните презентацию.
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 | @ |