C++ Kullanarak Treemap ve Sunburst Grafiklerde Veri Noktalarını Özelleştirme
Giriş
PowerPoint grafiklerinin diğer türlerinin yanı sıra iki adet “hiyerarşik” tür vardır - Treemap ve Sunburst grafiği (Sunburst Graph, Sunburst Diagram, Radial Chart, Radial Graph veya Multi Level Pie Chart olarak da bilinir). Bu grafikler, yapraklardan dalın tepesine kadar bir ağaç olarak düzenlenen hiyerarşik verileri gösterir. Yapraklar seri veri noktalarıyla tanımlanır ve sonraki her iç içe gruplanma seviyesi ilgili kategoriyle tanımlanır. Aspose.Slides for C++ Sunburst Chart ve Treemap veri noktalarını C++ içinde biçimlendirmeye olanak tanır.
Aşağıda bir Sunburst Chart örneği var, Series1 sütunundaki veriler yaprak düğümleri tanımlarken, diğer sütunlar hiyerarşik veri noktalarını tanımlar:
Sunburst grafiğini sunuma ekleyerek başlayalım:
auto pres = System::MakeObject<Presentation>();
auto chart = pres->get_Slides()->idx_get(0)->get_Shapes()->AddChart(ChartType::Sunburst, 100.0f, 100.0f, 450.0f, 400.0f);
// ...
Ayrıca bakınız
Grafiğin veri noktalarını biçimlendirmek gerekirse aşağıdakileri kullanmalıyız:
IChartDataPointLevelsManager,
IChartDataPointLevel sınıfları ve IChartDataPoint::get_DataPointLevels() metodu, Treemap ve Sunburst grafiklerinin veri noktalarını biçimlendirmeye erişim sağlar.
IChartDataPointLevelsManager çok seviyeli kategorilere erişmek için kullanılır - bu, IChartDataPointLevel nesnelerinin kapsayıcısını temsil eder.
Temelde bu, IChartCategoryLevelsManager için veri noktalarına özgü ek özellikler eklenmiş bir sarmalayıcıdır.
IChartDataPointLevel sınıfı iki metoda sahiptir: get_Format() ve get_Label() bu metodlar ilgili ayarlara erişim sağlar.
Bir Veri Noktasının Değerini Göster
“Leaf 4” veri noktasının değerini göster:
auto dataPoints = chart->get_ChartData()->get_Series()->idx_get(0)->get_DataPoints();
dataPoints->idx_get(3)->get_DataPointLevels()->idx_get(0)->get_Label()->get_DataLabelFormat()->set_ShowValue(true);
Bir Veri Noktasının Etiketini ve Rengini Ayarla
“Branch 1” veri etiketini kategori adı yerine seri adı (“Series1”) gösterecek şekilde ayarlayın. Ardından metin rengini sarı olarak ayarlayın:
auto branch1Label = dataPoints->idx_get(0)->get_DataPointLevels()->idx_get(2)->get_Label();
branch1Label->get_DataLabelFormat()->set_ShowCategoryName(false);
branch1Label->get_DataLabelFormat()->set_ShowSeriesName(true);
branch1Label->get_DataLabelFormat()->get_TextFormat()->get_PortionFormat()->get_FillFormat()->set_FillType(FillType::Solid);
branch1Label->get_DataLabelFormat()->get_TextFormat()->get_PortionFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Yellow());
Veri Noktası Dal Rengini Ayarla
“Stem 4” dalının rengini değiştirin:
auto pres = System::MakeObject<Presentation>();
auto chart = pres->get_Slides()->idx_get(0)->get_Shapes()->AddChart(ChartType::Sunburst, 100.0f, 100.0f, 450.0f, 400.0f);
auto dataPoints = chart->get_ChartData()->get_Series()->idx_get(0)->get_DataPoints();
auto stem4branch = dataPoints->idx_get(9)->get_DataPointLevels()->idx_get(1);
stem4branch->get_Format()->get_Fill()->set_FillType(FillType::Solid);
stem4branch->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(Color::get_Red());
pres->Save(u"pres.pptx", SaveFormat::Pptx);
SSS
Sunburst/Treemap dilimlerindeki sıralamayı (sıralamayı) değiştirebilir miyim?
Hayır. PowerPoint dilimleri otomatik olarak (genellikle azalan değerler, saat yönünde) sıralar. Aspose.Slides bu davranışı yansıtır: sıralamayı doğrudan değiştiremezsiniz; bunu verileri ön işleyerek elde edersiniz.
Sunum teması, dilimlerin ve etiketlerin renklerini nasıl etkiler?
Grafik renkleri, doldurmaları/yazı tiplerini açıkça ayarlamazsanız, sunumun theme/palette öğesini miras alır. Tutarlı sonuçlar için istenen seviyelerde katı dolgu ve metin formatlamasını kilitleyin.
PDF/PNG olarak dışa aktarırken özel dal renkleri ve etiket ayarları korunur mu?
Evet. Sunumu dışa aktarırken, grafik ayarları (dolgu, etiketler) çıktıda korunur çünkü Aspose.Slides grafik biçimlendirmesi uygulanmış olarak render eder.
Grafiğin üzerine özel bir bindirme yerleştirmek için bir etiket/elemanın gerçek koordinatlarını hesaplayabilir miyim?
Evet. Grafik düzeni doğrulandıktan sonra, elemanlar için gerçek X ve gerçek Y değerleri mevcuttur (örneğin, bir DataLabel), bu da bindirmelerin hassas konumlandırılmasına yardımcı olur.