Buat atau Perbarui Grafik Presentasi PowerPoint dengan Python
Gambaran Umum
Artikel ini memberikan panduan komprehensif tentang cara membuat dan menyesuaikan grafik menggunakan Aspose.Slides untuk Python via .NET. Anda akan belajar cara menambahkan grafik secara programatik ke sebuah slide, mengisi data, dan menerapkan berbagai opsi pemformatan untuk memenuhi kebutuhan desain spesifik Anda. Sepanjang artikel, contoh kode yang detail menggambarkan setiap langkah, mulai dari inisialisasi presentasi dan objek grafik hingga konfigurasi seri, sumbu, dan legenda. Dengan mengikuti panduan ini, Anda akan memperoleh pemahaman yang kuat tentang cara mengintegrasikan pembuatan grafik dinamis ke dalam aplikasi Python Anda, mempermudah proses pembuatan presentasi berbasis data.
Buat Grafik
Grafik membantu orang dengan cepat memvisualisasikan data dan mendapatkan wawasan yang mungkin tidak langsung terlihat dari tabel atau lembar kerja.
Mengapa Membuat Grafik?
Dengan grafik, Anda dapat:
- menggabungkan, memadatkan, atau merangkum sejumlah besar data pada satu slide dalam presentasi;
- menampilkan pola dan tren dalam data;
- menafsirkan arah dan momentum data seiring waktu atau terhadap satuan pengukuran tertentu;
- mengidentifikasi outlier, penyimpangan, kesalahan, dan data yang tidak masuk akal;
- menyampaikan atau mempresentasikan data yang kompleks.
Di PowerPoint, Anda dapat membuat grafik melalui fungsi Insert, yang menyediakan templat untuk merancang banyak jenis grafik. Menggunakan Aspose.Slides, Anda dapat membuat grafik reguler (berdasarkan tipe grafik populer) dan grafik khusus.
Note
Gunakan enumerasi ChartType di bawah modul aspose.slides.charts. Nilai-nilai dalam enumerasi ini sesuai dengan tipe grafik yang berbeda.Buat Grafik Kolom Berkelompok
Contoh ini menggunakan add_chart untuk membuat grafik kolom berkelompok yang membandingkan dua seri pada tiga kategori. Seri menggunakan isian merah dan hijau, dan label individual menunjukkan nama kategori, nama seri, serta nilai. Indeks lembar kerja 0 mengacu pada lembar pertama dalam buku kerja grafik tersemat.
import aspose.pydrawing as draw
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 300)
chart.chart_title.add_text_frame_for_overriding("Sample Title")
chart.chart_title.text_frame_for_overriding.text_frame_format.center_text = slides.NullableBool.TRUE
chart.chart_title.height = 20
chart.has_title = True
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
series_name_cell = workbook.get_cell(worksheet_index, 0, 1, "Series 1")
chart.chart_data.series.add(series_name_cell, chart.type)
series_name_cell = workbook.get_cell(worksheet_index, 0, 2, "Series 2")
chart.chart_data.series.add(series_name_cell, chart.type)
category_cell = workbook.get_cell(worksheet_index, 1, 0, "Category 1")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(worksheet_index, 2, 0, "Category 2")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(worksheet_index, 3, 0, "Category 3")
chart.chart_data.categories.add(category_cell)
series = chart.chart_data.series[0]
value_cell = workbook.get_cell(worksheet_index, 1, 1, 20)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 2, 1, 50)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 3, 1, 30)
series.data_points.add_data_point_for_bar_series(value_cell)
series.format.fill.fill_type = slides.FillType.SOLID
series.format.fill.solid_fill_color.color = draw.Color.red
series = chart.chart_data.series[1]
value_cell = workbook.get_cell(worksheet_index, 1, 2, 30)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 2, 2, 10)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 3, 2, 60)
series.data_points.add_data_point_for_bar_series(value_cell)
series.format.fill.fill_type = slides.FillType.SOLID
series.format.fill.solid_fill_color.color = draw.Color.green
label = series.data_points[0].label
label.data_label_format.show_category_name = True
label = series.data_points[1].label
label.data_label_format.show_series_name = True
label = series.data_points[2].label
label.data_label_format.show_value = True
label.data_label_format.show_series_name = True
label.data_label_format.separator = "/"
presentation.save("AsposeChart.pptx", slides.export.SaveFormat.PPTX)
Hasilnya:

Buat Grafik Sebar
Grafik sebar (juga dikenal sebagai scatter plot atau grafik x-y) sering digunakan untuk memeriksa pola atau menunjukkan korelasi antara dua variabel.
Gunakan grafik sebar ketika:
- Anda memiliki data numerik berpasangan.
- Anda memiliki dua variabel yang berpasangan dengan baik.
- Anda ingin menentukan apakah dua variabel tersebut berhubungan.
- Anda memiliki variabel independen yang memiliki banyak nilai untuk variabel dependen.
Contoh ini memplot dua himpunan nilai x-y. Seri pertama menggunakan garis lurus dengan penanda bintang, sementara seri kedua menggunakan garis halus dengan penanda lingkaran; keduanya menggunakan size sebesar 10. Properti symbol mengontrol bentuk penanda.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.SCATTER_WITH_SMOOTH_LINES, 20, 20, 500, 300)
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
chart.chart_data.series.clear()
series_name_cell = workbook.get_cell(worksheet_index, 1, 1, "Series 1")
chart.chart_data.series.add(series_name_cell, chart.type)
series_name_cell = workbook.get_cell(worksheet_index, 1, 3, "Series 2")
chart.chart_data.series.add(series_name_cell, chart.type)
series = chart.chart_data.series[0]
x_value_cell = workbook.get_cell(worksheet_index, 2, 1, 1)
y_value_cell = workbook.get_cell(worksheet_index, 2, 2, 3)
series.data_points.add_data_point_for_scatter_series(x_value_cell, y_value_cell)
x_value_cell = workbook.get_cell(worksheet_index, 3, 1, 2)
y_value_cell = workbook.get_cell(worksheet_index, 3, 2, 10)
series.data_points.add_data_point_for_scatter_series(x_value_cell, y_value_cell)
series.type = charts.ChartType.SCATTER_WITH_STRAIGHT_LINES_AND_MARKERS
series.marker.size = 10
series.marker.symbol = charts.MarkerStyleType.STAR
series = chart.chart_data.series[1]
x_value_cell = workbook.get_cell(worksheet_index, 2, 3, 5)
y_value_cell = workbook.get_cell(worksheet_index, 2, 4, 2)
series.data_points.add_data_point_for_scatter_series(x_value_cell, y_value_cell)
x_value_cell = workbook.get_cell(worksheet_index, 3, 3, 3)
y_value_cell = workbook.get_cell(worksheet_index, 3, 4, 1)
series.data_points.add_data_point_for_scatter_series(x_value_cell, y_value_cell)
x_value_cell = workbook.get_cell(worksheet_index, 4, 3, 2)
y_value_cell = workbook.get_cell(worksheet_index, 4, 4, 2)
series.data_points.add_data_point_for_scatter_series(x_value_cell, y_value_cell)
x_value_cell = workbook.get_cell(worksheet_index, 5, 3, 5)
y_value_cell = workbook.get_cell(worksheet_index, 5, 4, 1)
series.data_points.add_data_point_for_scatter_series(x_value_cell, y_value_cell)
series.marker.size = 10
series.marker.symbol = charts.MarkerStyleType.CIRCLE
presentation.save("AsposeChart.pptx", slides.export.SaveFormat.PPTX)
Hasilnya:

Buat Grafik Lingkaran
Grafik lingkaran paling cocok untuk menunjukkan hubungan bagian-ke‑seluruh dalam data, terutama ketika data berisi label kategorikal dengan nilai numerik. Namun, jika data Anda memiliki banyak bagian atau label, Anda mungkin ingin mempertimbangkan menggunakan grafik batang sebagai gantinya.
Contoh ini membuat grafik lingkaran dengan tiga nilai kuartalan. Setiap irisan memiliki isian dan tepi khusus, dan label menampilkan kombinasi nilai, persentase, serta informasi seri yang berbeda. Properti first_slice_angle mengatur irisan pertama mulai dari 180 derajat.
import aspose.pydrawing as draw
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.PIE, 20, 20, 500, 300)
chart.chart_title.add_text_frame_for_overriding("Sample Title")
chart.chart_title.text_frame_for_overriding.text_frame_format.center_text = slides.NullableBool.TRUE
chart.chart_title.height = 20
chart.has_title = True
chart.chart_data.series[0].labels.default_data_label_format.show_value = True
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
category_cell = workbook.get_cell(0, 1, 0, "1st Qtr")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, 2, 0, "2nd Qtr")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, 3, 0, "3rd Qtr")
chart.chart_data.categories.add(category_cell)
series_name_cell = workbook.get_cell(0, 0, 1, "Series 1")
series = chart.chart_data.series.add(series_name_cell, chart.type)
value_cell = workbook.get_cell(worksheet_index, 1, 1, 20)
series.data_points.add_data_point_for_pie_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 2, 1, 50)
series.data_points.add_data_point_for_pie_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 3, 1, 30)
series.data_points.add_data_point_for_pie_series(value_cell)
chart.chart_data.series_groups[0].is_color_varied = True
first_slice = series.data_points[0]
first_slice.format.fill.fill_type = slides.FillType.SOLID
first_slice.format.fill.solid_fill_color.color = draw.Color.cyan
first_slice.format.line.fill_format.fill_type = slides.FillType.SOLID
first_slice.format.line.fill_format.solid_fill_color.color = draw.Color.gray
first_slice.format.line.width = 3.0
first_slice.format.line.style = slides.LineStyle.THIN_THICK
first_slice.format.line.dash_style = slides.LineDashStyle.LARGE_DASH
second_slice = series.data_points[1]
second_slice.format.fill.fill_type = slides.FillType.SOLID
second_slice.format.fill.solid_fill_color.color = draw.Color.brown
second_slice.format.line.fill_format.fill_type = slides.FillType.SOLID
second_slice.format.line.fill_format.solid_fill_color.color = draw.Color.blue
second_slice.format.line.width = 3.0
second_slice.format.line.style = slides.LineStyle.SINGLE
second_slice.format.line.dash_style = slides.LineDashStyle.LARGE_DASH_DOT
third_slice = series.data_points[2]
third_slice.format.fill.fill_type = slides.FillType.SOLID
third_slice.format.fill.solid_fill_color.color = draw.Color.coral
third_slice.format.line.fill_format.fill_type = slides.FillType.SOLID
third_slice.format.line.fill_format.solid_fill_color.color = draw.Color.red
third_slice.format.line.width = 2.0
third_slice.format.line.style = slides.LineStyle.THIN_THIN
third_slice.format.line.dash_style = slides.LineDashStyle.LARGE_DASH_DOT_DOT
first_label = series.data_points[0].label
first_label.data_label_format.show_value = True
second_label = series.data_points[1].label
second_label.data_label_format.show_value = True
second_label.data_label_format.show_legend_key = True
second_label.data_label_format.show_percentage = True
third_label = series.data_points[2].label
third_label.data_label_format.show_series_name = True
third_label.data_label_format.show_percentage = True
series.labels.default_data_label_format.show_leader_lines = True
chart.chart_data.series_groups[0].first_slice_angle = 180
presentation.save("PieChart.pptx", slides.export.SaveFormat.PPTX)
Hasilnya:

Untuk meningkatkan keterbacaan label di luar lingkaran, lihat Format Leader Lines untuk contoh yang menempatkan label dan menyesuaikan warna, lebar, transparansi, serta gaya garis.
Buat Grafik Garis
Grafik garis (juga dikenal sebagai line graph) paling cocok dalam situasi di mana Anda ingin menunjukkan perubahan nilai seiring waktu. Dengan grafik garis, Anda dapat membandingkan sejumlah besar data sekaligus, melacak perubahan dan tren dari waktu ke waktu, menyoroti anomali dalam seri data, dan lain‑lain.
Contoh ini menggunakan add_chart untuk membuat grafik garis dengan seri dan kategori default, lalu menyimpan presentasi sebagai PPTX.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
line_chart = slide.shapes.add_chart(charts.ChartType.LINE, 20, 20, 500, 300)
presentation.save("lineChart.pptx", slides.export.SaveFormat.PPTX)
Secara default, titik pada grafik garis dihubungkan oleh garis lurus kontinu. Jika Anda ingin titik‑titik tersebut dihubungkan dengan garis putus‑putus, setel dash_style ke nilai dari LineDashStyle:
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
line_chart = slide.shapes.add_chart(charts.ChartType.LINE, 20, 20, 500, 300)
for series in line_chart.chart_data.series:
series.format.line.dash_style = slides.LineDashStyle.DASH
Hasilnya:

Buat Grafik Peta Pohon
Grafik peta pohon paling cocok untuk data penjualan ketika Anda ingin menunjukkan ukuran relatif kategori data dan dengan cepat menarik perhatian pada item yang menjadi kontributor besar dalam setiap kategori.
Contoh ini membuat peta pohon dengan delapan daun yang dikelompokkan menjadi empat batang dan dua cabang. Metode set_grouping_item menetapkan batang pada level pengelompokan 1 dan cabang pada level 2. Nilai menentukan ukuran persegi panjang relatif, sementara label kategori dan label orang tua yang tumpang tindih mengidentifikasi hierarki.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.TREEMAP, 20, 20, 500, 300)
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
# Cabang 1
category_cell = workbook.get_cell(0, "C1", "Leaf1")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem1")
leaf.grouping_levels.set_grouping_item(2, "Branch1")
category_cell = workbook.get_cell(0, "C2", "Leaf2")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "C3", "Leaf3")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem2")
category_cell = workbook.get_cell(0, "C4", "Leaf4")
chart.chart_data.categories.add(category_cell)
# Cabang 2
category_cell = workbook.get_cell(0, "C5", "Leaf5")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem3")
leaf.grouping_levels.set_grouping_item(2, "Branch2")
category_cell = workbook.get_cell(0, "C6", "Leaf6")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "C7", "Leaf7")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem4")
category_cell = workbook.get_cell(0, "C8", "Leaf8")
chart.chart_data.categories.add(category_cell)
series = chart.chart_data.series.add(charts.ChartType.TREEMAP)
series.labels.default_data_label_format.show_category_name = True
value_cell = workbook.get_cell(0, "D1", 4)
series.data_points.add_data_point_for_treemap_series(value_cell)
value_cell = workbook.get_cell(0, "D2", 5)
series.data_points.add_data_point_for_treemap_series(value_cell)
value_cell = workbook.get_cell(0, "D3", 3)
series.data_points.add_data_point_for_treemap_series(value_cell)
value_cell = workbook.get_cell(0, "D4", 6)
series.data_points.add_data_point_for_treemap_series(value_cell)
value_cell = workbook.get_cell(0, "D5", 9)
series.data_points.add_data_point_for_treemap_series(value_cell)
value_cell = workbook.get_cell(0, "D6", 9)
series.data_points.add_data_point_for_treemap_series(value_cell)
value_cell = workbook.get_cell(0, "D7", 4)
series.data_points.add_data_point_for_treemap_series(value_cell)
value_cell = workbook.get_cell(0, "D8", 3)
series.data_points.add_data_point_for_treemap_series(value_cell)
series.parent_label_layout = charts.ParentLabelLayoutType.OVERLAPPING
presentation.save("Treemap.pptx", slides.export.SaveFormat.PPTX)
Hasilnya:

Buat Grafik Air Terjun
Grafik air terjun menunjukkan bagaimana perubahan positif dan negatif berkontribusi pada nilai akhir. Misalnya, rincian laba dapat dimulai dengan pendapatan, mengurangi biaya, dan menambahkan pendapatan lain. Kolom perubahan mengambang antara nilai berjalan sebelumnya dan nilai baru, sementara kolom total memperluas dari nol ke nilai terakumulasi.
Contoh berikut menggunakan jumlah dalam ribuan dolar AS:
| Kategori | Nilai buku kerja | Tipe kolom |
|---|---|---|
| Pendapatan | 1000 | Increase |
| Biaya penjualan | -400 | Decrease |
| Laba kotor | 600 | Intermediate total |
| Biaya operasional | -200 | Decrease |
| Pendapatan lain | 50 | Increase |
| Laba bersih | 450 | Final total |
Untuk menandai suatu titik sebagai total menengah atau total akhir, setel properti set_as_total menjadi True. Berikan jumlah terakumulasi aktual pada sel buku kerja titik tersebut: 600 untuk laba kotor (1000 - 400) dan 450 untuk laba bersih (600 - 200 + 50). Properti ini menandai kolom sebagai total; ia tidak menghitung atau mengisi nilai sel. Jangan gunakan nol sebagai placeholder atau memberikan perubahan lain untuk titik total. Kolom total menampilkan nilai terakumulasi tanpa menambahkannya lagi ke nilai berjalan.
Contoh C# lengkap ini membuat grafik menggunakan anggota Waterfall dari ChartType, menghapus data default, dan mengisi buku kerja tersemat. Indeks lembar kerja 0 memilih lembar pertama; kolom A berisi nama kategori dan kolom B berisi nilai. Setiap sel nilai ditambahkan dengan add_data_point_for_waterfall_series. Indeks titik berbasis nol 2 dan 5 mengidentifikasi total menengah dan total akhir. Mengaktifkan show_value menampilkan jumlah pada kolom. Tidak diperlukan presentasi atau buku kerja input.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.WATERFALL, 20, 20, 680, 200)
chart.has_title = True
chart.chart_title.add_text_frame_for_overriding("Profit breakdown (USD thousands)")
chart.chart_title.overlay = False
chart.has_legend = False
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
workbook.clear(worksheet_index)
series_name_cell = workbook.get_cell(worksheet_index, 0, 1, "Profit")
series = chart.chart_data.series.add(series_name_cell, charts.ChartType.WATERFALL)
categories = ["Revenue", "Cost of sales", "Gross profit", "Operating expenses", "Other income", "Net profit"]
values = [1000, -400, 600, -200, 50, 450]
for i in range(len(categories)):
category_cell = workbook.get_cell(worksheet_index, i + 1, 0, categories[i])
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(worksheet_index, i + 1, 1, values[i])
series.data_points.add_data_point_for_w
aterfall_series(value_cell)
# Titik ketiga dan keenam mewakili total, bukan perubahan tambahan.
series.data_points[2].set_as_total = True
series.data_points[5].set_as_total = True
series.show_connector_lines = True
series.labels.default_data_label_format.show_value = True
presentation.save("WaterfallChart.pptx", slides.export.SaveFormat.PPTX)
Setel properti tingkat‑seri show_connector_lines menjadi True untuk menampilkan garis yang menghubungkan kolom berurutan dan memudahkan pelacakan nilai berjalan. Untuk menyembunyikan garis ini, gantikan penugasan dalam contoh dengan series.show_connector_lines = False sebelum menyimpan. Ini hanya mengubah visibilitas garis, bukan data atau total.
Presentasi yang disimpan menampilkan laba kotor 600 dan laba bersih 450, dengan kedua total dihitung dari nol:

Buat Grafik Saham
Grafik saham digunakan untuk menampilkan data keuangan seperti harga pembukaan, tertinggi, terendah, dan penutupan, membantu menganalisis tren pasar dan volatilitas. Grafik ini memberikan wawasan penting tentang kinerja saham, membantu investor dan analis membuat keputusan yang tepat.
Contoh ini membuat grafik open‑high‑low‑close dengan empat seri dalam urutan tersebut dan tiga kategori. Properti has_up_down_bars mengaktifkan batang naik/turun, dan hi_low_lines_format mengontrol garis tinggi‑rendah yang menunjukkan rentang harga, sementara garis seri individual dan garis kisi horizontal minor disembunyikan.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.OPEN_HIGH_LOW_CLOSE, 20, 20, 500, 300, False)
workbook = chart.chart_data.chart_data_workbook
category_cell = workbook.get_cell(0, 1, 0, "A")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, 2, 0, "B")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, 3, 0, "C")
chart.chart_data.categories.add(category_cell)
series_name_cell = workbook.get_cell(0, 0, 1, "Open")
chart.chart_data.series.add(series_name_cell, charts.ChartType.OPEN_HIGH_LOW_CLOSE)
series_name_cell = workbook.get_cell(0, 0, 2, "High")
chart.chart_data.series.add(series_name_cell, charts.ChartType.OPEN_HIGH_LOW_CLOSE)
series_name_cell = workbook.get_cell(0, 0, 3, "Low")
chart.chart_data.series.add(series_name_cell, charts.ChartType.OPEN_HIGH_LOW_CLOSE)
series_name_cell = workbook.get_cell(0, 0, 4, "Close")
chart.chart_data.series.add(series_name_cell, charts.ChartType.OPEN_HIGH_LOW_CLOSE)
series = chart.chart_data.series[0]
value_cell = workbook.get_cell(0, 1, 1, 72)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 2, 1, 25)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 3, 1, 38)
series.data_points.add_data_point_for_stock_series(value_cell)
series = chart.chart_data.series[1]
value_cell = workbook.get_cell(0, 1, 2, 172)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 2, 2, 57)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 3, 2, 57)
series.data_points.add_data_point_for_stock_series(value_cell)
series = chart.chart_data.series[2]
value_cell = workbook.get_cell(0, 1, 3, 12)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 2, 3, 12)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 3, 3, 13)
series.data_points.add_data_point_for_stock_series(value_cell)
series = chart.chart_data.series[3]
value_cell = workbook.get_cell(0, 1, 4, 25)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 2, 4, 38)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 3, 4, 50)
series.data_points.add_data_point_for_stock_series(value_cell)
chart.chart_data.series_groups[0].up_down_bars.has_up_down_bars = True
chart.chart_data.series_groups[0].hi_low_lines_format.line.fill_format.fill_type = slides.FillType.SOLID
for stock_series in chart.chart_data.series:
stock_series.format.line.fill_format.fill_type = slides.FillType.NO_FILL
chart.axes.vertical_axis.minor_grid_lines_format.line.fill_format.fill_type = slides.FillType.NO_FILL
presentation.save("Stock-chart.pptx", slides.export.SaveFormat.PPTX)
Hasilnya:

Buat Grafik Kotak‑Whisker
Grafik kotak‑whisker digunakan untuk menampilkan distribusi data dengan merangkum ukuran statistik utama, seperti median, kuartil, dan kemungkinan outlier. Grafik ini sangat berguna dalam analisis data eksploratori dan studi statistik untuk dengan cepat memahami variabilitas data dan mengidentifikasi anomali.
Contoh ini membuat grafik kotak‑whisker dari enam nilai. Properti quartile_method memilih perhitungan kuartil eksklusif. Contoh ini juga mengaktifkan garis rata‑rata, penanda rata‑rata, titik dalam, dan titik outlier.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.BOX_AND_WHISKER, 20, 20, 500, 300)
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
category_cell = workbook.get_cell(0, "A1", "Category 1")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A2", "Category 2")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A3", "Category 3")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A4", "Category 4")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A5", "Category 5")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A6", "Category 6")
chart.chart_data.categories.add(category_cell)
series = chart.chart_data.series.add(charts.ChartType.BOX_AND_WHISKER)
series.quartile_method = charts.QuartileMethodType.EXCLUSIVE
series.show_mean_line = True
series.show_mean_markers = True
series.show_inner_points = True
series.show_outlier_points = True
value_cell = workbook.get_cell(0, "B1", 15)
series.data_points.add_data_point_for_box_and_whisker_series(value_cell)
value_cell = workbook.get_cell(0, "B2", 41)
series.data_points.add_data_point_for_box_and_whisker_series(value_cell)
value_cell = workbook.get_cell(0, "B3", 16)
series.data_points.add_data_point_for_box_and_whisker_series(value_cell)
value_cell = workbook.get_cell(0, "B4", 10)
series.data_points.add_data_point_for_box_and_whisker_series(value_cell)
value_cell = workbook.get_cell(0, "B5", 23)
series.data_points.add_data_point_for_box_and_whisker_series(value_cell)
value_cell = workbook.get_cell(0, "B6", 16)
series.data_points.add_data_point_for_box_and_whisker_series(value_cell)
presentation.save("BoxAndWhisker.pptx", slides.export.SaveFormat.PPTX)
Buat Grafik Corong
Grafik corong digunakan untuk memvisualisasikan proses yang melibatkan tahap berurutan, di mana volume data berkurang seiring dengan kemajuan dari satu langkah ke langkah berikutnya. Grafik ini sangat membantu untuk menganalisis tingkat konversi, mengidentifikasi bottleneck, dan melacak efisiensi proses penjualan atau pemasaran.
Contoh ini menggunakan add_chart untuk menambahkan grafik corong ke slide pertama dari presentasi yang ada. Ia menggantikan data default dengan enam kategori dan nilai mulai 50 hingga 500, lalu menyimpan presentasi yang diperbarui. Presentasi input harus berisi setidaknya satu slide.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation("test.pptx") as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.FUNNEL, 50, 50, 500, 400)
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
category_cell = workbook.get_cell(0, "A1", "Category 1")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A2", "Category 2")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A3", "Category 3")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A4", "Category 4")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A5", "Category 5")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A6", "Category 6")
chart.chart_data.categories.add(category_cell)
series = chart.chart_data.series.add(charts.ChartType.FUNNEL)
value_cell = workbook.get_cell(0, "B1", 50)
series.data_points.add_data_point_for_funnel_series(value_cell)
value_cell = workbook.get_cell(0, "B2", 100)
series.data_points.add_data_point_for_funnel_series(value_cell)
value_cell = workbook.get_cell(0, "B3", 200)
series.data_points.add_data_point_for_funnel_series(value_cell)
value_cell = workbook.get_cell(0, "B4", 300)
series.data_points.add_data_point_for_funnel_series(value_cell)
value_cell = workbook.get_cell(0, "B5", 400)
series.data_points.add_data_point_for_funnel_series(value_cell)
value_cell = workbook.get_cell(0, "B6", 500)
series.data_points.add_data_point_for_funnel_series(value_cell)
presentation.save("Funnel.pptx", slides.export.SaveFormat.PPTX)
Hasilnya:

Buat Grafik Sunburst
Grafik sunburst digunakan untuk memvisualisasikan data hierarkis, menampilkan level sebagai cincin konsentris. Grafik ini membantu menggambarkan hubungan bagian‑ke‑seluruh dan ideal untuk merepresentasikan kategori bersarang serta subkategori dalam format yang jelas dan kompak.
Contoh ini membuat grafik sunburst dengan delapan daun yang dikelompokkan menjadi empat batang dan dua cabang. Metode set_grouping_item menetapkan batang pada level pengelompokan 1 dan cabang pada level 2. Label kategori mengidentifikasi segmen, dan nilai menentukan ukuran relatifnya.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.SUNBURST, 20, 20, 500, 300)
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
# Cabang 1
category_cell = workbook.get_cell(0, "C1", "Leaf1")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem1")
leaf.grouping_levels.set_grouping_item(2, "Branch1")
category_cell = workbook.get_cell(0, "C2", "Leaf2")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "C3", "Leaf3")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem2")
category_cell = workbook.get_cell(0, "C4", "Leaf4")
chart.chart_data.categories.add(category_cell)
# Cabang 2
category_cell = workbook.get_cell(0, "C5", "Leaf5")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem3")
leaf.grouping_levels.set_grouping_item(2, "Branch2")
category_cell = workbook.get_cell(0, "C6", "Leaf6")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "C7", "Leaf7")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem4")
category_cell = workbook.get_cell(0, "C8", "Leaf8")
chart.chart_data.categories.add(category_cell)
series = chart.chart_data.series.add(charts.ChartType.SUNBURST)
series.labels.default_data_label_format.show_category_name = True
value_cell = workbook.get_cell(0, "D1", 4)
series.data_points.add_data_point_for_sunburst_series(value_cell)
value_cell = workbook.get_cell(0, "D2", 5)
series.data_points.add_data_point_for_sunburst_series(value_cell)
value_cell = workbook.get_cell(0, "D3", 3)
series.data_points.add_data_point_for_sunburst_series(value_cell)
value_cell = workbook.get_cell(0, "D4", 6)
series.data_points.add_data_point_for_sunburst_series(value_cell)
value_cell = workbook.get_cell(0, "D5", 9)
series.data_points.add_data_point_for_sunburst_series(value_cell)
value_cell = workbook.get_cell(0, "D6", 9)
series.data_points.add_data_point_for_sunburst_series(value_cell)
value_cell = workbook.get_cell(0, "D7", 4)
series.data_points.add_data_point_for_sunburst_series(value_cell)
value_cell = workbook.get_cell(0, "D8", 3)
series.data_points.add_data_point_for_sunburst_series(value_cell)
presentation.save("Sunburst.pptx", slides.export.SaveFormat.PPTX)
Hasilnya:

Buat Grafik Histogram
Grafik histogram menunjukkan bagaimana nilai numerik tersebar di interval (bin). Untuk laporan bulanan tentang waktu pemrosesan pesanan, gunakan lebar bin dan ambang yang sama untuk menjaga konsistensi interval dan memudahkan perbandingan distribusi.
Setel sumbu horizontal aggregation_type ke mode dari AxisAggregationType. bin_width hanya berlaku untuk BY_BIN_WIDTH; number_of_bins hanya berlaku untuk BY_NUMBER_OF_BINS. Gunakan AUTOMATIC agar grafik memilih bin secara otomatis.
Gunakan Lebar Bin Tetap
Contoh ini mengelompokkan waktu pemrosesan menjadi interval 10 menit, dengan bin terpisah untuk waktu ≤ 10 menit dan > 40 menit. Aktifkan bin ini dengan is_underflow_bin dan is_overflow_bin. Saat menyertakan ambang underflow_bin dan overflow_bin secara eksplisit, setel is_automatic_underflow_bin dan is_automatic_overflow_bin menjadi False.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.HISTOGRAM, 20, 20, 680, 200)
chart.has_legend = False
chart.has_title = False
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
series = chart.chart_data.series.add(charts.ChartType.HISTOGRAM)
values = [5, 10, 10, 11, 15, 20, 20, 21, 25, 30, 30, 31, 35, 40, 40, 41, 50]
for i, value in enumerate(values):
value_cell = workbook.get_cell(0, i, 0, value)
series.data_points.add_data_point_for_histogram_series(value_cell)
axis = chart.axes.horizontal_axis
axis.aggregation_type = charts.AxisAggregationType.BY_BIN_WIDTH
axis.bin_width = 10
axis.is_underflow_bin = True
axis.is_automatic_underflow_bin = False
axis.underflow_bin = 10
axis.is_overflow_bin = True
axis.is_automatic_overflow_bin = False
axis.overflow_bin = 40
presentation.save("Histogram-bin-width.pptx", slides.export.SaveFormat.PPTX)
Presentasi yang ditampilkan di PowerPoint memperlihatkan jumlah bin 3, 4, 4, 4, dan 2. Bin underflow mencakup 5, 10, 10, sehingga ambangnya inklusif. Bin overflow hanya mencakup 41, 50, sehingga ambangnya eksklusif; kedua nilai 40 tetap berada di interval sebelumnya. Bin interior berisi nilai yang lebih besar dari batas bawah dan kurang dari atau sama dengan batas atasnya.

Tentukan Jumlah Bin
Untuk tingkat detail tetap alih‑alih interval tetap, minta lima bin untuk data yang sama. Contoh ini menonaktifkan bin underflow dan overflow. Grafik menentukan lebar dari rentang data, sehingga batas dapat berubah antar laporan.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.HISTOGRAM, 20, 20, 680, 200)
chart.has_legend = False
chart.has_title = False
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
series = chart.chart_data.series.add(charts.ChartType.HISTOGRAM)
values = [5, 10, 10, 11, 15, 20, 20, 21, 25, 30, 30, 31, 35, 40, 40, 41, 50]
for i, value in enumerate(values):
value_cell = workbook.get_cell(0, i, 0, value)
series.data_points.add_data_point_for_histogram_series(value_cell)
axis = chart.axes.horizontal_axis
axis.aggregation_type = charts.AxisAggregationType.BY_NUMBER_OF_BINS
axis.number_of_bins = 5
presentation.save("Histogram-bin-count.pptx", slides.export.SaveFormat.PPTX)
Lima bin memiliki jumlah 4, 4, 4, 4, dan 1. Bandingkan distribusi ini dengan hasil lebar‑bin tetap di atas: nilai input identik, tetapi batasnya berbeda.

Buat Grafik Radar
Grafik radar digunakan untuk menampilkan data multivariat dalam format dua dimensi, memungkinkan perbandingan beberapa variabel secara bersamaan. Grafik ini sangat berguna untuk mengidentifikasi pola, kekuatan, dan kelemahan di berbagai metrik atau atribut kinerja.
Contoh ini menggunakan add_chart untuk membuat grafik radar dengan seri dan kategori default, lalu menyimpan presentasi sebagai PPTX.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
slide.shapes.add_chart(charts.ChartType.RADAR, 20, 20, 500, 300)
presentation.save("Radar-chart.pptx", slides.export.SaveFormat.PPTX)
Hasilnya:

Buat Grafik Multi‑Kategori
Grafik multi‑kategori digunakan untuk menampilkan data yang melibatkan lebih dari satu pengelompokan kategori, memungkinkan Anda membandingkan nilai di beberapa dimensi secara bersamaan. Grafik ini sangat membantu ketika Anda perlu menganalisis tren dan hubungan dalam dataset berlapis kompleks.
Contoh ini membuat grafik kolom berkelompok dengan delapan kategori yang disusun dalam empat pasangan. Metode set_grouping_item memberikan setiap pasangan label bersama pada level pengelompokan 1, menghasilkan sumbu kategori dengan label individual serta grup.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 300)
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
worksheet_index = 0
category_cell = workbook.get_cell(0, "c2", "A")
category = chart.chart_data.categories.add(category_cell)
category.grouping_levels.set_grouping_item(1, "Group1")
category_cell = workbook.get_cell(0, "c3", "B")
category = chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "c4", "C")
category = chart.chart_data.categories.add(category_cell)
category.grouping_levels.set_grouping_item(1, "Group2")
category_cell = workbook.get_cell(0, "c5", "D")
category = chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "c6", "E")
category = chart.chart_data.categories.add(category_cell)
category.grouping_levels.set_grouping_item(1, "Group3")
category_cell = workbook.get_cell(0, "c7", "F")
category = chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "c8", "G")
category = chart.chart_data.categories.add(category_cell)
category.grouping_levels.set_grouping_item(1, "Group4")
category_cell = workbook.get_cell(0, "c9", "H")
category = chart.chart_data.categories.add(category_cell)
series_name_cell = workbook.get_cell(0, "D1", "Series 1")
series = chart.chart_data.series.add(series_name_cell, charts.ChartType.CLUSTERED_COLUMN)
value_cell = workbook.get_cell(worksheet_index, "D2", 10)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, "D3", 20)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, "D4", 30)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, "D5", 40)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, "D6", 50)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, "D7", 60)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, "D8", 70)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, "D9", 80)
series.data_points.add_data_point_for_bar_series(value_cell)
presentation.save("AsposeChart.pptx", slides.export.SaveFormat.PPTX)
Hasilnya:

Buat Grafik Peta
Grafik peta digunakan untuk memvisualisasikan data geografis dengan memetakan informasi ke lokasi spesifik seperti negara, provinsi, atau kota. Grafik ini sangat berguna untuk menganalisis tren regional, data demografis, dan distribusi spasial dalam cara yang jelas dan menarik secara visual.
Contoh ini menggunakan add_chart untuk membuat grafik peta dengan data geografis default dan menyimpannya untuk dilihat di PowerPoint.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.MAP, 20, 20, 500, 300)
presentation.save("mapChart.pptx", slides.export.SaveFormat.PPTX)
Hasilnya:

Note
Gambar di atas menunjukkan presentasi yang disimpan dibuka di PowerPoint. Aspose.Slides menulis grafik peta dan datanya dengan benar, tetapi tidak menggambar grafik peta secara langsung: ketika slide yang memuatnya dirender menjadi gambar atau dikonversi ke PDF atau SVG, area grafik menjadi kosong. Bentuk lain pada slide yang sama tidak terpengaruh.Buat Grafik Kombinasi
Grafik kombinasi (atau combo chart) menggabungkan dua atau lebih tipe grafik dalam satu grafik. Grafik ini memungkinkan Anda menyoroti, membandingkan, atau memeriksa perbedaan antara dua atau lebih set data, membantu mengidentifikasi hubungan di antaranya.

Contoh ini menggabungkan dua seri kolom berkelompok dengan seri garis pada empat kategori. Kolom menggunakan sumbu vertikal utama, sementara plot_on_second_axis menempatkan garis pada sumbu vertikal sekunder di kanan. Fungsi bantu mengatur judul, legenda, label sumbu, dan garis kisi.
import aspose.pydrawing as draw
import aspose.slides as slides
import aspose.slides.charts as charts
def create_combo_chart():
with slides.Presentation() as presentation:
chart = create_chart_with_first_series(presentation.slides[0])
add_second_series_to_chart(chart)
add_third_series_to_chart(chart)
set_primary_axes_format(chart)
set_secondary_axes_format(chart)
presentation.save("combo-chart.pptx", slides.export.SaveFormat.PPTX)
def create_chart_with_first_series(slide):
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 600, 400)
chart.has_title = True
chart.chart_title.add_text_frame_for_overriding("Chart Title")
chart.chart_title.overlay = False
portion_format = chart.chart_title.text_frame_for_overriding.paragraphs[0].paragraph_format.default_portion_format
portion_format.font_bold = slides.NullableBool.FALSE
portion_format.font_height = 18
chart.legend.position = charts.LegendPositionType.BOTTOM
chart.legend.text_format.portion_format.font_height = 12
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
category_cell = workbook.get_cell(worksheet_index, 1, 0, "Category 1")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(worksheet_index, 2, 0, "Category 2")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(worksheet_index, 3, 0, "Category 3")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(worksheet_index, 4, 0, "Category 4")
chart.chart_data.categories.add(category_cell)
series_name_cell = workbook.get_cell(worksheet_index, 0, 1, "Series 1")
series = chart.chart_data.series.add(series_name_cell, chart.type)
series.parent_series_group.overlap = -25
series.parent_series_group.gap_width = 220
value_cell = workbook.get_cell(worksheet_index, 1, 1, 4.3)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 2, 1, 2.5)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 3, 1, 3.5)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 4, 1, 4.5)
series.data_points.add_data_point_for_bar_series(value_cell)
return chart
def add_second_series_to_chart(chart):
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
series_name_cell = workbook.get_cell(worksheet_index, 0, 2, "Series 2")
series = chart.chart_data.series.add(series_name_cell, charts.ChartType.CLUSTERED_COLUMN)
series.parent_series_group.overlap = -25
series.parent_series_group.gap_width = 220
value_cell = workbook.get_cell(worksheet_index, 1, 2, 2.4)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 2, 2, 4.4)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 3, 2, 1.8)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 4, 2, 2.8)
series.data_points.add_data_point_for_bar_series(value_cell)
def add_third_series_to_chart(chart):
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
series_name_cell = workbook.get_cell(worksheet_index, 0, 3, "Series 3")
series = chart.chart_data.series.add(series_name_cell, charts.ChartType.LINE)
value_cell = workbook.get_cell(worksheet_index, 1, 3, 2.0)
series.data_points.add_data_point_for_line_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 2, 3, 2.0)
series.data_points.add_data_point_for_line_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 3, 3, 3.0)
series.data_points.add_data_point_for_line_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 4, 3, 5.0)
series.data_points.add_data_point_for_line_series(value_cell)
series.plot_on_second_axis = True
def set_primary_axes_format(chart):
horizontal_axis = chart.axes.horizontal_axis
horizontal_axis.text_format.portion_format.font_height = 12
horizontal_axis.format.line.fill_format.fill_type = slides.FillType.NO_FILL
set_axis_title(horizontal_axis, "X Axis")
vertical_axis = chart.axes.vertical_axis
vertical_axis.text_format.portion_format.font_height = 12
vertical_axis.format.line.fill_format.fill_type = slides.FillType.NO_FILL
set_axis_title(vertical_axis, "Y Axis 1")
major_grid_lines_format = vertical_axis.major_grid_lines_format.line.fill_format
major_grid_lines_format.fill_type = slides.FillType.SOLID
major_grid_lines_format.solid_fill_color.color = draw.Color.from_argb(217, 217, 217)
def set_secondary_axes_format(chart):
secondary_horizontal_axis = chart.axes.secondary_horizontal_axis
secondary_horizontal_axis.position = charts.AxisPositionType.BOTTOM
secondary_horizontal_axis.cross_type = charts.CrossesType.MAXIMUM
secondary_horizontal_axis.is_visible = False
secondary_horizontal_axis.major_grid_lines_format.line.fill_format.fill_type = slides.FillType.NO_FILL
secondary_horizontal_axis.minor_grid_lines_format.line.fill_format.fill_type = slides.FillType.NO_FILL
secondary_vertical_axis = chart.axes.secondary_vertical_axis
secondary_vertical_axis.position = charts.AxisPositionType.RIGHT
secondary_vertical_axis.text_format.portion_format.font_height = 12
secondary_vertical_axis.format.line.fill_format.fill_type = slides.FillType.NO_FILL
secondary_vertical_axis.major_grid_lines_format.line.fill_format.fill_type = slides.FillType.NO_FILL
secondary_vertical_axis.minor_grid_lines_format.line.fill_format.fill_type = slides.FillType.NO_FILL
set_axis_title(secondary_vertical_axis, "Y Axis 2")
def set_axis_title(axis, axis_title):
axis.has_title = True
axis.title.overlay = False
title_portion_format = axis.title.add_text_frame_for_overriding(axis_title).paragraphs[0].paragraph_format.default_portion_format
title_portion_format.font_bold = slides.NullableBool.FALSE
title_portion_format.font_height = 12
create_combo_chart()
Perbarui Grafik
Aspose.Slides untuk Python via .NET memungkinkan Anda memperbarui grafik PowerPoint dengan memodifikasi data grafik, pemformatan, dan gaya. Fungsionalitas ini menyederhanakan proses menjaga presentasi tetap mutakhir dengan konten dinamis dan memastikan grafik secara akurat mencerminkan data dan standar visual terkini.
Contoh ini memperbarui grafik bernama “My chart” pada slide pertama dari presentasi yang ada. Ia memerlukan dua seri kolom dengan tiga titik data masing‑masing, dengan label kategori di kolom A dan nama seri di baris pertama lembar kerja pertama. Contoh ini menggunakan get_cell untuk mengubah sel buku kerja, memperbarui nilai seri, menambahkan seri ketiga, dan mengubah grafik menjadi silinder berkelompok melalui type.
import aspose.slides as slides
import aspose.slides.charts as charts
chart_name = "My chart"
with slides.Presentation("ExistingChart.pptx") as presentation:
slide = presentation.slides[0]
for shape in slide.shapes:
if isinstance(shape, charts.Chart) and shape.name == chart_name:
chart = shape
worksheet_index = 0
workbook = chart.chart_data.chart_data_workbook
workbook.get_cell(worksheet_index, 1, 0, "Modified Category 1")
workbook.get_cell(worksheet_index, 2, 0, "Modified Category 2")
series = chart.chart_data.series[0]
workbook.get_cell(worksheet_index, 0, 1, "New_Series 1")
series.data_points[0].value.data = 90
series.data_points[1].value.data = 123
series.data_points[2].value.data = 44
series = chart.chart_data.series[1]
workbook.get_cell(worksheet_index, 0, 2, "New_Series 2")
series.data_points[0].value.data = 23
series.data_points[1].value.data = 67
series.data_points[2].value.data = 99
series_name_cell = workbook.get_cell(worksheet_index, 0, 3, "Series 3")
series = chart.chart_data.series.add(series_name_cell, chart.type)
value_cell = workbook.get_cell(worksheet_index, 1, 3, 20)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 2, 3, 50)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 3, 3, 30)
series.data_points.add_data_point_for_bar_series(value_cell)
chart.type = charts.ChartType.CLUSTERED_CYLINDER
presentation.save("AsposeChartModified.pptx", slides.export.SaveFormat.PPTX)
Setel Rentang Data untuk Grafik
Untuk memeriksa rentang yang sudah digunakan oleh grafik yang ada, lihat Retrieve a Chart’s Data Range.
Aspose.Slides untuk Python via .NET menyediakan fleksibilitas untuk mendefinisikan rentang data spesifik dari lembar kerja sebagai sumber data grafik Anda. Ini berarti Anda dapat memetakan bagian lembar kerja langsung ke grafik, sehingga Anda dapat mengontrol sel mana yang berkontribusi pada seri dan kategori grafik. Akibatnya, Anda dapat dengan mudah memperbarui dan menyinkronkan grafik dengan perubahan data terbaru di lembar kerja, memastikan presentasi PowerPoint Anda mencerminkan informasi yang akurat dan terkini.
Contoh ini menggunakan set_range untuk menetapkan sumber data grafik bernama “My chart” pada slide pertama dari presentasi yang ada ke Sheet1!A1:B4. Buku kerja grafik harus berisi lembar kerja tersebut dan rentang terisi dengan judul seri di baris pertama, label kategori di kolom A, dan tiga nilai di kolom B.
import aspose.slides as slides
import aspose.slides.charts as charts
chart_name = "My chart"
with slides.Presentation("ExistingChart.pptx") as presentation:
slide = presentation.slides[0]
for shape in slide.shapes:
if isinstance(shape, charts.Chart) and shape.name == chart_name:
chart = shape
chart.chart_data.set_range("Sheet1!A1:B4")
presentation.save("SetDataRange.pptx", slides.export.SaveFormat.PPTX)
Gunakan Penanda Bawaan di Grafik
Ketika Anda menggunakan penanda bawaan di grafik, setiap seri grafik secara otomatis menerima simbol penanda default yang berbeda.
Contoh ini menggunakan add_chart untuk membuat grafik dengan dua seri garis dan legenda. Pengaturan marker mempertahankan simbol penanda yang ditetapkan secara otomatis. Seri pertama mencakup nilai negatif dan nilai yang hilang, yang direpresentasikan oleh None, sementara seri kedua memiliki nilai untuk setiap kategori.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.LINE_WITH_MARKERS, 10, 10, 400, 400)
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
workbook = chart.chart_data.chart_data_workbook
series_name_cell = workbook.get_cell(0, 0, 1, "Series 1")
series = chart.chart_data.series.add(series_name_cell, chart.type)
category_cell = workbook.get_cell(0, 1, 0, "C1")
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(0, 1, 1, 24)
series.data_points.add_data_point_for_line_series(value_cell)
category_cell = workbook.get_cell(0, 2, 0, "C2")
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(0, 2, 1, 23)
series.data_points.add_data_point_for_line_series(value_cell)
category_cell = workbook.get_cell(0, 3, 0, "C3")
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(0, 3, 1, -10)
series.data_points.add_data_point_for_line_series(value_cell)
category_cell = workbook.get_cell(0, 4, 0, "C4")
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(0, 4, 1, None)
series.data_points.add_data_point_for_line_series(value_cell)
series_name_cell = workbook.get_cell(0, 0, 2, "Series 2")
second_series = chart.chart_data.series.add(series_name_cell, chart.type)
value_cell = workbook.get_cell(0, 1, 2, 30)
second_series.data_points.add_data_point_for_line_series(value_cell)
value_cell = workbook.get_cell(0, 2, 2, 10)
second_series.data_points.add_data_point_for_line_series(value_cell)
value_cell = workbook.get_cell(0, 3, 2, 60)
second_series.data_points.add_data_point_for_line_series(value_cell)
value_cell = workbook.get_cell(0, 4, 2, 40)
second_series.data_points.add_data_point_for_line_series(value_cell)
chart.has_legend = True
chart.legend.overlay = False
presentation.save("DefaultMarkersInChart.pptx", slides.export.SaveFormat.PPTX)
FAQ
Jenis grafik apa yang didukung oleh Aspose.Slides untuk Python via .NET?
Aspose.Slides untuk Python via .NET mendukung berbagai jenis grafik, termasuk batang, garis, lingkaran, area, sebar, histogram, radar, dan banyak lagi. Fleksibilitas ini memungkinkan Anda memilih tipe grafik yang paling sesuai untuk kebutuhan visualisasi data Anda.
Bagaimana cara menambahkan grafik baru ke slide?
Untuk menambahkan grafik, pertama‑tama buat instance kelas Presentation, ambil slide yang diinginkan menggunakan indeksnya, kemudian panggil metode untuk menambahkan grafik, menentukan tipe grafik dan data awal. Proses ini menyisipkan grafik langsung ke dalam presentasi Anda.
Bagaimana cara memperbarui data yang ditampilkan dalam grafik?
Anda dapat memperbarui data grafik dengan mengakses buku kerja datanya (ChartDataWorkbook), menghapus seri dan kategori default, lalu menambahkan data khusus Anda. Ini memungkinkan Anda memperbarui grafik secara programatik agar mencerminkan data terbaru.
Apakah memungkinkan menyesuaikan tampilan grafik?
Ya, Aspose.Slides untuk Python via .NET menyediakan opsi penyesuaian yang luas. Anda dapat mengubah warna, font, label, legenda, dan elemen pemformatan lainnya untuk menyesuaikan tampilan grafik sesuai dengan persyaratan desain spesifik Anda.