Kelola Seri Data Grafik dalam Presentasi Menggunakan С++
Ikhtisar
Artikel ini menjelaskan peran ChartSeries dalam Aspose.Slides, dengan fokus pada cara data terstruktur dan divisualisasikan dalam presentasi. Objek-objek ini menyediakan elemen dasar yang mendefinisikan kumpulan titik data, kategori, dan parameter tampilan individual dalam sebuah grafik. Dengan menggunakan ChartSeries, pengembang dapat mengintegrasikan sumber data yang mendasari dan mengendalikan sepenuhnya cara informasi ditampilkan, menghasilkan presentasi dinamis berbasis data yang jelas menyampaikan wawasan dan analisis.
Sebuah seri adalah baris atau kolom angka yang dipetakan dalam sebuah grafik.

Atur Overlap Seri Data
Dengan metode IChartSeries::get_Overlap(), Anda dapat menentukan seberapa banyak batang dan kolom harus saling tumpang tindih pada grafik 2D (rentang: -100 hingga 100). Properti ini berlaku untuk semua seri dalam grup seri induk: ini merupakan proyeksi properti grup yang sesuai.
Gunakan metode get_ParentSeriesGroup()::set_Overlap() untuk menetapkan nilai Overlap yang Anda inginkan.
- Buat instance dari kelas Presentation.
- Tambahkan grafik kolom berkelompok pada sebuah slide.
- Akses seri grafik pertama.
- Akses
ParentSeriesGroupseri grafik dan tetapkan nilai overlap yang diinginkan untuk seri tersebut. - Tulis presentasi yang telah dimodifikasi ke file PPTX.
Kode C++ berikut menunjukkan cara mengatur overlap untuk sebuah seri grafik:
auto presentation = System::MakeObject<Presentation>();
auto shapes = presentation->get_Slides()->idx_get(0)->get_Shapes();
// Menambahkan grafik
auto chart = shapes->AddChart(ChartType::ClusteredColumn, 50.0f, 50.0f, 600.0f, 400.0f, true);
auto series = chart->get_ChartData()->get_Series();
if (series->idx_get(0)->get_Overlap() == 0)
{
// Mengatur tumpang tindih seri
series->idx_get(0)->get_ParentSeriesGroup()->set_Overlap(-30);
}
// Menulis file presentasi ke disk
presentation->Save(u"SetChartSeriesOverlap_out.pptx", SaveFormat::Pptx);
Ubah Warna Seri Data
Aspose.Slides untuk C++ memungkinkan Anda mengubah warna seri dengan cara berikut:
- Buat instance dari kelas Presentation.
- Tambahkan grafik pada slide.
- Akses seri yang ingin Anda ubah warnanya.
- Tetapkan tipe isian dan warna isian yang diinginkan.
- Simpan presentasi yang telah dimodifikasi.
Kode C++ berikut menunjukkan cara mengubah warna seri:
auto pres = System::MakeObject<Presentation>(u"test.pptx");
auto shapes = pres->get_Slides()->idx_get(0)->get_Shapes();
auto chart = shapes->AddChart(ChartType::Pie, 50.0f, 50.0f, 600.0f, 400.0f);
auto point = chart->get_ChartData()->get_Series()->idx_get(0)->get_DataPoints()->idx_get(1);
point->set_Explosion(30);
point->get_Format()->get_Fill()->set_FillType(FillType::Solid);
point->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(Color::get_Blue());
pres->Save(u"output.pptx", SaveFormat::Pptx);
Ubah Warna Kategori Seri Data
Aspose.Slides untuk C++ memungkinkan Anda mengubah warna kategori seri dengan cara berikut:
- Buat instance dari kelas Presentation.
- Tambahkan grafik pada slide.
- Akses kategori seri yang ingin Anda ubah warnanya.
- Tetapkan tipe isian dan warna isian yang diinginkan.
- Simpan presentasi yang telah dimodifikasi.
Kode C++ berikut menunjukkan cara mengubah warna kategori seri:
auto pres = System::MakeObject<Presentation>();
auto shapes = pres->get_Slides()->idx_get(0)->get_Shapes();
auto chart = shapes->AddChart(ChartType::ClusteredColumn, 50.0f, 50.0f, 600.0f, 400.0f);
auto point = chart->get_ChartData()->get_Series()->idx_get(0)->get_DataPoints()->idx_get(0);
point->get_Format()->get_Fill()->set_FillType(FillType::Solid);
point->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(Color::get_Blue());
pres->Save(u"output.pptx", SaveFormat::Pptx);
Ubah Nama Seri Data
Secara default, nama legend untuk sebuah grafik berasal dari isi sel di atas setiap kolom atau baris data.
Dalam contoh kami (gambar contoh),
- kolomnya adalah Series 1, Series 2, dan Series 3;
- barisnya adalah Category 1, Category 2, Category 3, dan Category 4.
Aspose.Slides untuk C++ memungkinkan Anda memperbarui atau mengubah nama seri dalam data grafik dan legendanya.
Kode C++ berikut menunjukkan cara mengubah nama seri dalam ChartDataWorkbook grafik:
auto pres = System::MakeObject<Presentation>();
auto shapes = pres->get_Slides()->idx_get(0)->get_Shapes();
auto chart = shapes->AddChart(ChartType::Column3D, 50.0f, 50.0f, 600.0f, 400.0f, true);
auto seriesCell = chart->get_ChartData()->get_ChartDataWorkbook()->GetCell(0, 0, 1);
seriesCell->set_Value(ObjectExt::Box<String>(u"New name"));
pres->Save(u"pres.pptx", SaveFormat::Pptx);
Kode C++ berikut menunjukkan cara mengubah nama seri melalui Series pada legendanya:
auto pres = System::MakeObject<Presentation>();
auto shapes = pres->get_Slides()->idx_get(0)->get_Shapes();
auto chart = shapes->AddChart(ChartType::Column3D, 50.0f, 50.0f, 600.0f, 400.0f, true);
auto series = chart->get_ChartData()->get_Series()->idx_get(0);
auto name = series->get_Name();
name->get_AsCells()->idx_get(0)->set_Value(ObjectExt::Box<String>(u"New name"));
Atur Warna Isi Seri Data
Aspose.Slides untuk C++ memungkinkan Anda menetapkan warna isi otomatis untuk seri grafik di dalam area plot dengan cara berikut:
- Buat instance dari kelas Presentation.
- Dapatkan referensi slide berdasarkan indeksnya.
- Tambahkan grafik dengan data default berdasarkan tipe yang Anda pilih (pada contoh di bawah, kami menggunakan
ChartType::ClusteredColumn). - Akses seri grafik dan tetapkan warna isi ke Automatic.
- Simpan presentasi ke file PPTX.
Kode C++ berikut menunjukkan cara menetapkan warna isi otomatis untuk sebuah seri grafik:
auto presentation = System::MakeObject<Presentation>();
auto shapes = presentation->get_Slides()->idx_get(0)->get_Shapes();
// Membuat grafik kolom berkelompok
auto chart = shapes->AddChart(ChartType::ClusteredColumn, 100.0f, 50.0f, 600.0f, 400.0f);
// Mengatur format isi seri menjadi otomatis
for (const auto& series : chart->get_ChartData()->get_Series())
{
series->GetAutomaticSeriesColor();
}
// Menulis file presentasi ke disk
presentation->Save(u"AutoFillSeries_out.pptx", SaveFormat::Pptx);
Atur Warna Isi Terbalik untuk Seri Data
Aspose.Slides memungkinkan Anda mengatur warna isi terbalik untuk seri grafik di dalam area plot dengan cara berikut:
- Buat instance dari kelas Presentation.
- Dapatkan referensi slide berdasarkan indeksnya.
- Tambahkan grafik dengan data default berdasarkan tipe yang Anda pilih (pada contoh di bawah, kami menggunakan
ChartType::ClusteredColumn). - Akses seri grafik dan tetapkan warna isi ke invert.
- Simpan presentasi ke file PPTX.
Kode C++ berikut mendemonstrasikan operasi tersebut:
Color inverColor = Color::get_Red();
auto pres = System::MakeObject<Presentation>();
auto shapes = pres->get_Slides()->idx_get(0)->get_Shapes();
auto chart = shapes->AddChart(ChartType::ClusteredColumn, 100.0f, 100.0f, 400.0f, 300.0f);
auto workBook = chart->get_ChartData()->get_ChartDataWorkbook();
auto chartData = chart->get_ChartData();
chartData->get_Series()->Clear();
chartData->get_Categories()->Clear();
// Adds new series and categories
chartData->get_Series()->Add(workBook->GetCell(0, 0, 1, ObjectExt::Box<String>(u"Series 1")), chart->get_Type());
chartData->get_Categories()->Add(workBook->GetCell(0, 1, 0, ObjectExt::Box<String>(u"Category 1")));
chartData->get_Categories()->Add(workBook->GetCell(0, 2, 0, ObjectExt::Box<String>(u"Category 2")));
chartData->get_Categories()->Add(workBook->GetCell(0, 3, 0, ObjectExt::Box<String>(u"Category 3")));
// Takes the first chart series and populates its series data.
auto series = chartData->get_Series()->idx_get(0);
series->get_DataPoints()->AddDataPointForBarSeries(workBook->GetCell(0, 1, 1, ObjectExt::Box<int32_t>(-20)));
series->get_DataPoints()->AddDataPointForBarSeries(workBook->GetCell(0, 2, 1, ObjectExt::Box<int32_t>(50)));
series->get_DataPoints()->AddDataPointForBarSeries(workBook->GetCell(0, 3, 1, ObjectExt::Box<int32_t>(-30)));
Color seriesColor = series->GetAutomaticSeriesColor();
series->set_InvertIfNegative(true);
series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(seriesColor);
series->get_InvertedSolidFillColor()->set_Color(inverColor);
pres->Save(u"SetInvertFillColorChart_out.pptx", SaveFormat::Pptx);
Atur Warna Isi Terbalik untuk Seri Grafik
Aspose.Slides memungkinkan Anda mengatur inversi melalui metode IChartDataPoint::set_InvertIfNegative() dan ChartDataPoint.set_InvertIfNegative(). Ketika inversi diatur menggunakan metode tersebut, titik data akan membalikkan warnanya ketika menerima nilai negatif.
Kode C++ berikut mendemonstrasikan operasi tersebut:
auto pres = System::MakeObject<Presentation>();
auto shapes = pres->get_Slides()->idx_get(0)->get_Shapes();
auto chart = shapes->AddChart(ChartType::ClusteredColumn, 50.0f, 50.0f, 600.0f, 400.0f, true);
auto series = chart->get_ChartData()->get_Series();
chart->get_ChartData()->get_Series()->Clear();
auto workBook = chart->get_ChartData()->get_ChartDataWorkbook();
series->Add(workBook->GetCell(0, u"B1"), chart->get_Type());
auto dataPoints = series->idx_get(0)->get_DataPoints();
dataPoints->AddDataPointForBarSeries(workBook->GetCell(0, u"B2", ObjectExt::Box<int32_t>(-5)));
dataPoints->AddDataPointForBarSeries(workBook->GetCell(0, u"B3", ObjectExt::Box<int32_t>(3)));
dataPoints->AddDataPointForBarSeries(workBook->GetCell(0, u"B4", ObjectExt::Box<int32_t>(-2)));
dataPoints->AddDataPointForBarSeries(workBook->GetCell(0, u"B5", ObjectExt::Box<int32_t>(1)));
series->idx_get(0)->set_InvertIfNegative(false);
series->idx_get(0)->get_DataPoints()->idx_get(2)->set_InvertIfNegative(true);
pres->Save(u"out.pptx", SaveFormat::Pptx);
Bersihkan Nilai Titik Data Spesifik
Aspose.Slides untuk C++ memungkinkan Anda membersihkan data DataPoints untuk seri grafik tertentu dengan cara berikut:
- Buat instance dari kelas Presentation.
- Dapatkan referensi slide melalui indeksnya.
- Dapatkan referensi grafik melalui indeksnya.
- Iterasi semua
DataPointsgrafik dan setelXValuesertaYValuemenjadi null. - Bersihkan semua
DataPointsuntuk seri grafik yang spesifik. - Tulis presentasi yang telah dimodifikasi ke file PPTX.
Kode C++ berikut mendemonstrasikan operasi tersebut:
auto pres = System::MakeObject<Presentation>(u"TestChart.pptx");
auto sl = pres->get_Slides()->idx_get(0);
auto chart = System::ExplicitCast<IChart>(sl->get_Shapes()->idx_get(0));
auto dataPoints = chart->get_ChartData()->get_Series()->idx_get(0)->get_DataPoints();
for (const auto& dataPoint : dataPoints)
{
dataPoint->get_XValue()->get_AsCell()->set_Value(nullptr);
dataPoint->get_YValue()->get_AsCell()->set_Value(nullptr);
}
dataPoints->Clear();
pres->Save(u"ClearSpecificChartSeriesDataPointsData.pptx", SaveFormat::Pptx);
Atur Lebar Celah Seri Data
Aspose.Slides untuk C++ memungkinkan Anda mengatur Lebar Celah (Gap Width) sebuah seri melalui metode set_GapWidth() dengan cara berikut:
- Buat instance dari kelas Presentation.
- Akses slide pertama.
- Tambahkan grafik dengan data default.
- Akses seri grafik mana saja.
- Setel properti
GapWidth. - Tulis presentasi yang telah dimodifikasi ke file PPTX.
Kode C++ berikut menunjukkan cara mengatur Lebar Celah sebuah seri:
// Membuat presentasi kosong
auto presentation = System::MakeObject<Presentation>();
// Mengakses slide pertama presentasi
auto slide = presentation->get_Slides()->idx_get(0);
// Menambahkan grafik dengan data default
auto chart = slide->get_Shapes()->AddChart(ChartType::StackedColumn, 0.0f, 0.0f, 500.0f, 500.0f);
// Menetapkan indeks lembar data grafik
int32_t worksheetIndex = 0;
// Mendapatkan lembar kerja data grafik
auto workbook = chart->get_ChartData()->get_ChartDataWorkbook();
// Menambahkan seri
chart->get_ChartData()->get_Series()->Add(workbook->GetCell(worksheetIndex, 0, 1, ObjectExt::Box<String>(u"Series 1")), chart->get_Type());
chart->get_ChartData()->get_Series()->Add(workbook->GetCell(worksheetIndex, 0, 2, ObjectExt::Box<String>(u"Series 2")), chart->get_Type());
// Menambahkan Kategori
chart->get_ChartData()->get_Categories()->Add(workbook->GetCell(worksheetIndex, 1, 0, ObjectExt::Box<String>(u"Category 1")));
chart->get_ChartData()->get_Categories()->Add(workbook->GetCell(worksheetIndex, 2, 0, ObjectExt::Box<String>(u"Category 2")));
chart->get_ChartData()->get_Categories()->Add(workbook->GetCell(worksheetIndex, 3, 0, ObjectExt::Box<String>(u"Category 3")));
// Mengambil seri grafik kedua
auto series = chart->get_ChartData()->get_Series()->idx_get(1);
auto dataPoints = series->get_DataPoints();
// Mengisi data seri
dataPoints->AddDataPointForBarSeries(workbook->GetCell(worksheetIndex, 1, 1, ObjectExt::Box<int32_t>(20)));
dataPoints->AddDataPointForBarSeries(workbook->GetCell(worksheetIndex, 2, 1, ObjectExt::Box<int32_t>(50)));
dataPoints->AddDataPointForBarSeries(workbook->GetCell(worksheetIndex, 3, 1, ObjectExt::Box<int32_t>(30)));
dataPoints->AddDataPointForBarSeries(workbook->GetCell(worksheetIndex, 1, 2, ObjectExt::Box<int32_t>(30)));
dataPoints->AddDataPointForBarSeries(workbook->GetCell(worksheetIndex, 2, 2, ObjectExt::Box<int32_t>(10)));
dataPoints->AddDataPointForBarSeries(workbook->GetCell(worksheetIndex, 3, 2, ObjectExt::Box<int32_t>(60)));
// Menetapkan nilai GapWidth
series->get_ParentSeriesGroup()->set_GapWidth(50);
// Menyimpan presentasi ke disk
presentation->Save(u"GapWidth_out.pptx", SaveFormat::Pptx);
FAQ
Apakah ada batasan jumlah seri yang dapat dimiliki satu grafik?
Aspose.Slides tidak memberlakukan batas tetap pada jumlah seri yang Anda tambahkan. Batas praktis ditentukan oleh keterbacaan grafik dan memori yang tersedia untuk aplikasi Anda.
Bagaimana jika kolom dalam satu klaster terlalu dekat atau terlalu jauh satu sama lain?
Sesuaikan pengaturan lebar celah (gap width) untuk seri tersebut (atau grup seri induknya). Meningkatkan nilai akan memperlebar ruang antar kolom, sementara menurunkannya akan membuat kolom lebih rapat.