Как да зададете свойства на осите на диаграмата
Ако искате да работите с ос на диаграмата, мащабиране и показване на единици за оста на стойностите, моля, използвайте класове ChartAxis, AxisDisplayUnit и AxisScaling.
Следващият пример за код показва как да дефинирате свойствата на оста Х и у:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(); | |
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); | |
// Insert chart. | |
System::SharedPtr<Shape> shape = builder->InsertChart(ChartType::Area, 432, 252); | |
System::SharedPtr<Chart> chart = shape->get_Chart(); | |
// Clear demo data. | |
chart->get_Series()->Clear(); | |
// Fill data. | |
System::ArrayPtr<System::DateTime> dates = System::MakeArray<System::DateTime>({System::DateTime(2002, 1, 1), | |
System::DateTime(2002, 6, 1), | |
System::DateTime(2002, 7, 1), | |
System::DateTime(2002, 8, 1), | |
System::DateTime(2002, 9, 1)}); | |
chart->get_Series()->Add(u"AW Series 1", dates, System::MakeArray<double>({640, 320, 280, 120, 150})); | |
System::SharedPtr<ChartAxis> xAxis = chart->get_AxisX(); | |
System::SharedPtr<ChartAxis> yAxis = chart->get_AxisY(); | |
// Change the X axis to be category instead of date, so all the points will be put with equal interval on the X axis. | |
xAxis->set_CategoryType(AxisCategoryType::Category); | |
// Define X axis properties. | |
xAxis->set_Crosses(AxisCrosses::Custom); | |
xAxis->set_CrossesAt(3); | |
// measured in display units of the Y axis (hundreds) | |
xAxis->set_ReverseOrder(true); | |
xAxis->set_MajorTickMark(AxisTickMark::Cross); | |
xAxis->set_MinorTickMark(AxisTickMark::Outside); | |
xAxis->set_TickLabelOffset(200); | |
// Define Y axis properties. | |
yAxis->set_TickLabelPosition(AxisTickLabelPosition::High); | |
yAxis->set_MajorUnit(100); | |
yAxis->set_MinorUnit(50); | |
yAxis->get_DisplayUnit()->set_Unit(AxisBuiltInUnit::Hundreds); | |
yAxis->get_Scaling()->set_Minimum(System::MakeObject<AxisBound>(100)); | |
yAxis->get_Scaling()->set_Maximum(System::MakeObject<AxisBound>(700)); | |
System::String outputPath = outputDataDir + u"WorkingWithChartAxis.DefineXYAxisProperties.docx"; | |
doc->Save(outputPath); |
Как да зададете стойност за дата и час на оста
Следният пример за код показва как да зададете стойности за дата / час на свойства на осите:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(); | |
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); | |
// Insert chart. | |
System::SharedPtr<Shape> shape = builder->InsertChart(ChartType::Column, 432, 252); | |
System::SharedPtr<Chart> chart = shape->get_Chart(); | |
// Clear demo data. | |
chart->get_Series()->Clear(); | |
// Fill data. | |
System::ArrayPtr<System::DateTime> dates = System::MakeArray<System::DateTime>({System::DateTime(2017, 11, 6), | |
System::DateTime(2017, 11, 9), | |
System::DateTime(2017, 11, 15), | |
System::DateTime(2017, 11, 21), | |
System::DateTime(2017, 11, 25), | |
System::DateTime(2017, 11, 29)}); | |
chart->get_Series()->Add(u"AW Series 1", dates, System::MakeArray<double>({1.2, 0.3, 2.1, 2.9, 4.2, 5.3})); | |
// Set X axis bounds. | |
System::SharedPtr<ChartAxis> xAxis = chart->get_AxisX(); | |
xAxis->get_Scaling()->set_Minimum(System::MakeObject<AxisBound>((System::DateTime(2017, 11, 5)).ToOADate())); | |
xAxis->get_Scaling()->set_Maximum(System::MakeObject<AxisBound>((System::DateTime(2017, 12, 3)).ToOADate())); | |
// Set major units to a week and minor units to a day. | |
xAxis->set_MajorUnit(7); | |
xAxis->set_MinorUnit(1); | |
xAxis->set_MajorTickMark(AxisTickMark::Cross); | |
xAxis->set_MinorTickMark(AxisTickMark::Outside); | |
System::String outputPath = outputDataDir + u"WorkingWithChartAxis.SetDateTimeValuesToAxis.docx"; | |
doc->Save(outputPath); |
Как да форматирате числова стойност на ОС
Следващият пример за код показва как да промените формата на числата по оста на стойностите:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(); | |
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); | |
// Insert chart. | |
System::SharedPtr<Shape> shape = builder->InsertChart(ChartType::Column, 432, 252); | |
System::SharedPtr<Chart> chart = shape->get_Chart(); | |
// Clear demo data. | |
chart->get_Series()->Clear(); | |
// Fill data. | |
chart->get_Series()->Add(u"AW Series 1", | |
System::MakeArray<System::String>({u"Item 1", u"Item 2", u"Item 3", u"Item 4", u"Item 5"}), | |
System::MakeArray<double>({1900000, 850000, 2100000, 600000, 1500000})); | |
// Set number format. | |
chart->get_AxisY()->get_NumberFormat()->set_FormatCode(u"#,##0"); | |
System::String outputPath = outputDataDir + u"WorkingWithChartAxis.SetNumberFormatForAxis.docx"; | |
doc->Save(outputPath); |
Как да зададете границите на оста
Клас AxisBound
представлява минимална или максимална граница от стойности на осите. Подвързването може да бъде зададено като числова, дата-час или специална “автоматична” стойност.
Следващият пример за код показва как да зададете границите на ОС:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(); | |
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); | |
// Insert chart. | |
System::SharedPtr<Shape> shape = builder->InsertChart(ChartType::Column, 432, 252); | |
System::SharedPtr<Chart> chart = shape->get_Chart(); | |
// Clear demo data. | |
chart->get_Series()->Clear(); | |
// Fill data. | |
chart->get_Series()->Add(u"AW Series 1", | |
System::MakeArray<System::String>({u"Item 1", u"Item 2", u"Item 3", u"Item 4", u"Item 5"}), | |
System::MakeArray<double>({1.2, 0.3, 2.1, 2.9, 4.2})); | |
chart->get_AxisY()->get_Scaling()->set_Minimum(System::MakeObject<AxisBound>(0)); | |
chart->get_AxisY()->get_Scaling()->set_Maximum(System::MakeObject<AxisBound>(6)); | |
System::String outputPath = outputDataDir + u"WorkingWithChartAxis.SetBoundsOfAxis.docx"; | |
doc->Save(outputPath); |
Как да зададете интервал между етикетите
Следващият пример за код показва как да зададете интервалната единица между етикетите на ОС:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(); | |
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); | |
// Insert chart. | |
System::SharedPtr<Shape> shape = builder->InsertChart(ChartType::Column, 432, 252); | |
System::SharedPtr<Chart> chart = shape->get_Chart(); | |
// Clear demo data. | |
chart->get_Series()->Clear(); | |
// Fill data. | |
chart->get_Series()->Add(u"AW Series 1", | |
System::MakeArray<System::String>({u"Item 1", u"Item 2", u"Item 3", u"Item 4", u"Item 5"}), | |
System::MakeArray<double>({1.2, 0.3, 2.1, 2.9, 4.2})); | |
chart->get_AxisX()->set_TickLabelSpacing(2); | |
System::String outputPath = outputDataDir + u"WorkingWithChartAxis.SetIntervalUnitBetweenLabelsOnAxis.docx"; | |
doc->Save(outputPath); |
Как да скриете оста на диаграмата
Ако искате да покажете или скриете оста на диаграмата, можете просто да постигнете това, като зададете стойността на свойството set_Hidden.
Следващият пример за код показва как да скриете оста у на диаграмата:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(); | |
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); | |
// Insert chart. | |
System::SharedPtr<Shape> shape = builder->InsertChart(ChartType::Column, 432, 252); | |
System::SharedPtr<Chart> chart = shape->get_Chart(); | |
// Clear demo data. | |
chart->get_Series()->Clear(); | |
// Fill data. | |
chart->get_Series()->Add(u"AW Series 1", | |
System::MakeArray<System::String>({u"Item 1", u"Item 2", u"Item 3", u"Item 4", u"Item 5"}), | |
System::MakeArray<double>({1.2, 0.3, 2.1, 2.9, 4.2})); | |
// Hide the Y axis. | |
chart->get_AxisY()->set_Hidden(true); | |
System::String outputPath = outputDataDir + u"WorkingWithChartAxis.HideChartAxis.docx"; | |
doc->Save(outputPath); |
Как да подравните етикета на диаграмата
Ако искате да зададете подравняване на текст за многоредови етикети, можете просто да постигнете това, като зададете стойността на свойството TickLabelAlignment. Следващият пример за код показва как да маркирате подравняването на етикета.
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Document.docx"); | |
System::SharedPtr<Shape> shape = System::DynamicCast<Shape>(doc->GetChild(NodeType::Shape, 0, true)); | |
System::SharedPtr<ChartAxis> axis = shape->get_Chart()->get_AxisX(); | |
//This property has effect only for multi-line labels. | |
axis->set_TickLabelAlignment(ParagraphAlignment::Right); | |
doc->Save(outputDataDir + u"WorkingWithChartAxis.TickMultiLineLabelAlignment.docx"); |