Sunumlarda С++ Kullanarak Grafik Veri Etiketlerini Yönetme
Giriş
Bir grafikteki veri etiketleri, grafik veri serileri veya tek tek veri noktaları hakkında ayrıntılar gösterir. Okuyucuların veri serilerini hızlıca tanımlamasını sağlar ve grafikleri daha anlaşılır kılar.
Grafik Veri Etiketlerinde Veri Hassasiyetini Ayarlama
Bu C++ kodu, bir grafik veri etiketinde veri hassasiyetini nasıl ayarlayacağınızı gösterir:
// Belgeler dizinine giden yol
const String outPath = u"../out/SettingPrecisionOfDataLabel_out.pptx";
// PPTX dosyasını temsil eden Presentation sınıfının bir örneğini oluşturur
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// İlk slaytı alır
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Varsayılan veriyle bir grafik ekler
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::Line, 0, 0, 500, 500);
// Seri sayı formatını ayarlar
chart->set_HasDataTable( true);
chart->get_ChartData()->get_Series()->idx_get(0)->set_NumberFormatOfValues (u"#,##0.00");
// Sunum dosyasını diske yazar
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
Yüzdeleri Etiket Olarak Görüntüleme
Aspose.Slides for C++, görüntülenen grafiklerde yüzde etiketleri ayarlamanıza olanak tanır. Bu C++ kodu işlemi gösterir:
// Belgeler dizinine giden yol
const String outPath = u"../out/DisplayPercentageAsLabels_out.pptx";
// Creates an instance of the Presentation class
System::SharedPtr<Presentation> presentation = System::MakeObject<Presentation>();
System::SharedPtr<ISlide> slide = presentation->get_Slides()->idx_get(0);
System::SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::StackedColumn, 20, 20, 400, 400);
System::SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);
System::SharedPtr<IChartCategory> cat;
System::ArrayPtr<double> total_for_Cat = System::MakeObject<System::Array<double>>(chart->get_ChartData()->get_Categories()->get_Count(), 0);
for (int32_t k = 0; k < chart->get_ChartData()->get_Categories()->get_Count(); k++)
{
cat = chart->get_ChartData()->get_Categories()->idx_get(k);
for (int32_t i = 0; i < chart->get_ChartData()->get_Series()->get_Count(); i++)
{
total_for_Cat[k] = total_for_Cat[k] + System::Convert::ToDouble(chart->get_ChartData()->get_Series()->idx_get(i)->get_DataPoints()->idx_get(k)->get_Value()->get_Data());
}
}
double dataPontPercent = 0.f;
for (int32_t x = 0; x < chart->get_ChartData()->get_Series()->get_Count(); x++)
{
series = chart->get_ChartData()->get_Series()->idx_get(x);
series->get_Labels()->get_DefaultDataLabelFormat()->set_ShowLegendKey(false);
for (int32_t j = 0; j < series->get_DataPoints()->get_Count(); j++)
{
System::SharedPtr<IDataLabel> lbl = series->get_DataPoints()->idx_get(j)->get_Label();
dataPontPercent = (System::Convert::ToDouble(series->get_DataPoints()->idx_get(j)->get_Value()->get_Data()) / total_for_Cat[j]) * 100;
System::SharedPtr<IPortion> port = System::MakeObject<Portion>();
port->set_Text(System::String::Format(u"{0:F2} %", dataPontPercent));
port->get_PortionFormat()->set_FontHeight(8.f);
lbl->get_TextFrameForOverriding()->set_Text(u"");
System::SharedPtr<IParagraph> para = lbl->get_TextFrameForOverriding()->get_Paragraphs()->idx_get(0);
para->get_Portions()->Add(port);
lbl->get_DataLabelFormat()->set_ShowSeriesName(false);
lbl->get_DataLabelFormat()->set_ShowPercentage(false);
lbl->get_DataLabelFormat()->set_ShowLegendKey(false);
lbl->get_DataLabelFormat()->set_ShowCategoryName(false);
lbl->get_DataLabelFormat()->set_ShowBubbleSize(false);
}
}
// Grafiği içeren sunumu kaydeder
presentation->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
Grafik Veri Etiketlerinde Yüzde İşaretini Ayarlama
Bu C++ kodu, bir grafik veri etiketi için yüzde işaretini nasıl ayarlayacağınızı gösterir:
// Belgeler dizinine giden yol.
const String outPath = u"../out/DataLabelsPercentageSign_out.pptx";
// Presentation sınıfının bir örneğini oluşturur
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// Bir slaytın referansını indeksiyle alır
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Slayt üzerinde PercentsStackedColumn grafiğini oluşturur
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::PercentsStackedColumn, 0, 0, 500, 500);
// NumberFormatLinkedToSource özelliğini false olarak ayarlar
chart->get_Axes()->get_VerticalAxis()->set_IsNumberFormatLinkedToSource ( false);
chart->get_Axes()->get_VerticalAxis()->set_NumberFormat(u"0.00%");
// Grafik veri sayfasının indeksini ayarlar
int defaultWorksheetIndex = 0;
// Grafik veri çalışma sayfasını alır
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();
// Varsayılan oluşturulan seriyi siler
chart->get_ChartData()->get_Series()->Clear();
// Yeni bir seri ekler
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 2, ObjectExt::Box<System::String>(u"Series 2")), chart->get_Type());
// İlk grafik serisini alır
SharedPtr<IChartSeries> series=chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 1, ObjectExt::Box<System::String>(u"Red")), chart->get_Type());
// Seri verilerini doldurur
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 1, 1, ObjectExt::Box<double>(0.50)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 2, 1, ObjectExt::Box<double>(0.50)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 3, 1, ObjectExt::Box<double>(0.80)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 4, 1, ObjectExt::Box<double>(0.65)));
// Seri için dolgu rengini ayarlar
series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
// LabelFormat özelliklerini ayarlar
series->get_Labels()->get_DefaultDataLabelFormat()->set_ShowValue(true);
series->get_Labels()->get_DefaultDataLabelFormat()->set_IsNumberFormatLinkedToSource ( false);
series->get_Labels()->get_DefaultDataLabelFormat()->set_NumberFormat (u"0.0%");
series->get_Labels()->get_DefaultDataLabelFormat()->get_TextFormat()->get_PortionFormat()->set_FontHeight ( 10);
series->get_Labels()->get_DefaultDataLabelFormat()->get_TextFormat()->get_PortionFormat()->get_FillFormat()->set_FillType(FillType::Solid);
series->get_Labels()->get_DefaultDataLabelFormat()->get_TextFormat()->get_PortionFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_White());
series->get_Labels()->get_DefaultDataLabelFormat()->set_ShowValue(true);
// İkinci grafik serisini alır
SharedPtr<IChartSeries> series2 = chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 2, ObjectExt::Box<System::String>(u"Blues")), chart->get_Type());
// Seri verilerini doldurur
series2->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 1, 2, ObjectExt::Box<double>(0.70)));
series2->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 2, 2, ObjectExt::Box<double>(0.50)));
series2->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 3, 2, ObjectExt::Box<double>(0.20)));
series2->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 4, 2, ObjectExt::Box<double>(0.35)));
// Seri için dolgu rengini ayarlar
series2->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series2->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Blue());
// LabelFormat özelliklerini ayarlar
series2->get_Labels()->get_DefaultDataLabelFormat()->set_ShowValue(true);
series2->get_Labels()->get_DefaultDataLabelFormat()->set_IsNumberFormatLinkedToSource(false);
series2->get_Labels()->get_DefaultDataLabelFormat()->set_NumberFormat(u"0.0%");
series2->get_Labels()->get_DefaultDataLabelFormat()->get_TextFormat()->get_PortionFormat()->set_FontHeight(10);
series2->get_Labels()->get_DefaultDataLabelFormat()->get_TextFormat()->get_PortionFormat()->get_FillFormat()->set_FillType(FillType::Solid);
series2->get_Labels()->get_DefaultDataLabelFormat()->get_TextFormat()->get_PortionFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_White());
series2->get_Labels()->get_DefaultDataLabelFormat()->set_ShowValue(true);
// Sunum dosyasını diske yazar
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
Etiketi Eksenden Uzaklığa Ayarlama
Bu C++ kodu, eksenlerden çizilmiş bir grafikle çalışırken kategori ekseninden etiket mesafesini nasıl ayarlayacağınızı gösterir:
// Belgeler dizinine giden yol
const String outPath = u"../out/CategoryAxisLabelDistance_out.pptx";
// Presentation sınıfının bir örneğini oluşturur
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// Bir slaytın referansını alır
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Slaytta bir grafik oluşturur
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ClusteredColumn, 0, 0, 500, 500);
// Grafik serileri koleksiyonunu alır
SharedPtr<IChartSeriesCollection> seriesCollection = chart->get_ChartData()->get_Series();
// Etiketi eksenden uzaklığı ayarlar
chart->get_Axes()->get_HorizontalAxis()->set_LabelOffset ( 500);
// Sunum dosyasını diske yazar
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
Etiket Konumunu Ayarlama
Eksen gerektirmeyen bir grafik (örneğin pasta grafiği) oluşturduğunuzda, grafiğin veri etiketleri kenara çok yakın olabilir. Böyle bir durumda, lider çizgilerin net görünmesi için veri etiketinin konumunu ayarlamanız gerekir.
Bu C++ kodu, bir pasta grafiğinde etiket konumunu nasıl ayarlayacağınızı gösterir:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();
System::SharedPtr<IChart> chart = pres->get_Slide(0)->get_Shapes()->AddChart(ChartType::Pie, 50.0f, 50.0f, 200.0f, 200.0f);
System::SharedPtr<IChartSeriesCollection> series = chart->get_ChartData()->get_Series();
System::SharedPtr<IDataLabel> label = series->idx_get(0)->get_Label(0);
System::SharedPtr<IDataLabelFormat> dataLabelFormat = label->get_DataLabelFormat();
dataLabelFormat->set_ShowValue(true);
dataLabelFormat->set_Position(LegendDataLabelPosition::OutsideEnd);
label->set_X(0.71f);
label->set_Y(0.04f);
pres->Save(u"pres.pptx", SaveFormat::Pptx);

SSS
Yoğun grafiklerde veri etiketlerinin üst üste binmesini nasıl önleyebilirim?
Otomatik etiket yerleşimini, lider çizgileri ve küçültülmüş yazı tipini birleştirin; gerekirse bazı alanları (örneğin kategori) gizleyin veya yalnızca uç/anahtar noktalar için etiketleri gösterin.
Sıfır, negatif veya boş değerler için yalnızca etiketleri nasıl devre dışı bırakabilirim?
Etiketleri etkinleştirmeden önce veri noktalarını filtreleyin ve tanımlı bir kurala göre 0, negatif veya eksik değerler için görünümü kapatın.
PDF/görsellere dışa aktarırken tutarlı bir etiket stilini nasıl sağlayabilirim?
Yazı tiplerini (aile, boyut) açıkça ayarlayın ve yedekleme olmaması için render tarafında yazı tipinin mevcut olduğunu doğrulayın.