Sesuaikan Sumbu Diagram dalam Presentasi dengan Python
Gambaran Umum
Artikel ini menjelaskan cara menyesuaikan sumbu diagram dengan Aspose.Slides for Python via .NET. Artikel ini mencakup nilai sumbu yang dihitung, penukaran baris dan kolom diagram, visibilitas sumbu, interval label kategori dan tanda centang, kategori tanggal dan pemformatannya, rotasi judul, posisi sumbu, serta satuan tampilan.
Dapatkan Nilai Maksimum pada Sumbu Vertikal pada Diagram
Buat sebuah Presentation dan tambahkan diagram area dengan data default. Panggil validate_chart_layout sebelum membaca nilai sumbu yang dihitung sehingga tata letak diagram mutakhir.
Baca actual_max_value dan actual_min_value untuk batas sumbu, serta actual_major_unit dan actual_minor_unit untuk interval tanda centang. actual_major_unit_scale dan actual_minor_unit_scale menyediakan skala satuan waktu, yang relevan untuk sumbu tanggal. Contoh menyimpan nilai-nilai ini dalam variabel lokal dan menyimpan diagram.
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.AREA, 100, 100, 500, 350)
chart.validate_chart_layout()
max_value = chart.axes.vertical_axis.actual_max_value
min_value = chart.axes.vertical_axis.actual_min_value
major_unit = chart.axes.vertical_axis.actual_major_unit
minor_unit = chart.axes.vertical_axis.actual_minor_unit
major_unit_scale = chart.axes.vertical_axis.actual_major_unit_scale
minor_unit_scale = chart.axes.vertical_axis.actual_minor_unit_scale
presentation.save("AxisValues_out.pptx", slides.export.SaveFormat.PPTX)
Tukar Data antar Sumbu
Gunakan switch_row_column untuk menukar peran seri dan kategori dalam data diagram. Setiap kategori sebelumnya menjadi seri, dan setiap seri sebelumnya menjadi kategori. Ini mengubah cara data dikelompokkan; tidak menukar sumbu horizontal dan vertikal. Contoh menggunakan set_range untuk mengikat data default ke Sheet1!A1:D5, termasuk baris header dan kolom kategori, sebelum menukar baris dan kolom. Contoh menyimpan diagram dengan empat seri dan tiga 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.CLUSTERED_COLUMN, 100, 100, 400, 300)
chart.chart_data.set_range("Sheet1!A1:D5")
chart.chart_data.switch_row_column()
presentation.save("SwitchChartRowColumns_out.pptx", slides.export.SaveFormat.PPTX)
Nonaktifkan Sumbu Vertikal untuk Diagram Garis
Setel is_visible menjadi False pada sumbu vertikal untuk menyembunyikannya. Contoh membuat diagram garis dengan data default dan menyimpannya dengan sumbu vertikal tersembunyi.
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, 100, 100, 400, 300)
chart.axes.vertical_axis.is_visible = False
presentation.save("HiddenVerticalAxis.pptx", slides.export.SaveFormat.PPTX)
Nonaktifkan Sumbu Horizontal untuk Diagram Garis
Setel is_visible menjadi False pada sumbu horizontal untuk menyembunyikannya. Contoh membuat diagram garis dengan data default dan menyimpannya dengan sumbu horizontal tersembunyi.
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, 100, 100, 400, 300)
chart.axes.horizontal_axis.is_visible = False
presentation.save("HiddenHorizontalAxis.pptx", slides.export.SaveFormat.PPTX)
Ubah Sumbu Kategori
Setel category_axis_type untuk memilih sumbu kategori tanggal atau teks. Contoh ini memerlukan ExistingChart.pptx, dengan diagram sebagai bentuk pertama pada slide pertama dan sel kategori berisi nilai tanggal Excel numerik. Contoh mengubah sumbu horizontal menjadi sumbu tanggal. Menetapkan is_automatic_major_unit menjadi False, major_unit menjadi 1, dan major_unit_scale ke bulan menempatkan tanda centang mayor pada interval satu bulan.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation("ExistingChart.pptx") as presentation:
slide = presentation.slides[0]
chart = slide.shapes[0]
chart.axes.horizontal_axis.category_axis_type = charts.CategoryAxisType.DATE
chart.axes.horizontal_axis.is_automatic_major_unit = False
chart.axes.horizontal_axis.major_unit = 1
chart.axes.horizontal_axis.major_unit_scale = charts.TimeUnitType.MONTHS
presentation.save("ChangeChartCategoryAxis_out.pptx", slides.export.SaveFormat.PPTX)
Kontrol Interval Label Sumbu Kategori
Ketika sebuah diagram memiliki banyak kategori, kurangi jumlah label sumbu yang terlihat tanpa menghapus kategori atau titik data. Setel is_automatic_tick_label_spacing menjadi False, lalu setel tick_label_spacing ke interval kategori yang diinginkan. Untuk kategori teks dalam urutan normal, penghitungan dimulai dari kategori pertama:
| Interval | Label yang ditampilkan dalam contoh |
|---|---|
1 |
Kategori 1, Kategori 2, Kategori 3, … Kategori 24 |
2 |
Kategori 1, Kategori 3, Kategori 5, … Kategori 23 |
3 |
Kategori 1, Kategori 4, Kategori 7, … Kategori 22 |
Interval 3 menampilkan setiap label ketiga, menyisakan dua label tersembunyi di antara label yang ditampilkan. Ini tidak menghapus kolom yang bersesuaian. Spasi otomatis memilih interval berdasarkan ruang yang tersedia; tidak selalu menampilkan setiap label.
Tanda centang memiliki kontrol terpisah. Setel is_automatic_tick_marks_spacing menjadi False dan gunakan tick_marks_spacing untuk mengatur intervalnya. Misalnya, 1 menjaga tanda centang pada setiap interval kategori sementara label muncul hanya setiap kategori ketiga. Setel major_tick_mark ke gaya yang terlihat agar Anda dapat melihat hasilnya. Mengembalikan properti otomatis mana pun ke True memungkinkan diagram memilih interval itu kembali.
Contoh mandiri berikut membuat 24 kategori dan satu seri, lalu menyimpan tiga slide dalam CategoryAxisIntervals.pptx: spasi otomatis, spasi label manual dengan tanda centang independen, dan pemulihan spasi otomatis. Kedua salinan mempertahankan data diagram asli. Tidak diperlukan presentasi masukan. Teks label horizontal mempermudah melihat perbedaan kepadatan.
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, 30, 40, 660, 320)
chart.has_legend = 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.CLUSTERED_COLUMN)
for i in range(24):
category_cell = workbook.get_cell(0, i + 1, 0, f"Category {i + 1}")
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(0, i + 1, 1, 10 + i % 6 * 5)
series.data_points.add_data_point_for_bar_series(value_cell)
axis = chart.axes.horizontal_axis
axis.category_axis_type = charts.CategoryAxisType.TEXT
axis.text_format.text_block_format.rotation_angle = 0
axis.text_format.portion_format.font_height = 12
axis.major_tick_mark = charts.TickMarkType.OUTSIDE
axis.is_automatic_tick_label_spacing = True
axis.is_automatic_tick_marks_spacing = True
# Slide 2: tampilkan setiap label ketiga, tetapi tetap pertahankan tanda centang untuk setiap kategori.
manual_slide = presentation.slides.add_clone(slide)
manual_chart = manual_slide.shapes[0]
manual_axis = manual_chart.axes.horizontal_axis
manual_axis.is_automatic_tick_label_spacing = False
manual_axis.tick_label_spacing = 3
manual_axis.is_automatic_tick_marks_spacing = False
manual_axis.tick_marks_spacing = 1
# Slide 3: biarkan diagram memilih kembali kedua interval.
restored_slide = presentation.slides.add_clone(manual_slide)
restored_chart = restored_slide.shapes[0]
restored_chart.axes.horizontal_axis.is_automatic_tick_label_spacing = True
restored_chart.axes.horizontal_axis.is_automatic_tick_marks_spacing = True
presentation.save("CategoryAxisIntervals.pptx", slides.export.SaveFormat.PPTX)
Automatic spacing (slide 1): Dalam rendering ini, setiap label kategori kedua ditampilkan dan dibungkus menjadi dua baris. Hasil otomatis dapat bervariasi tergantung pada ukuran diagram, font, dan renderer.

Manual spacing (slide 2): Setiap label ketiga ditampilkan pada satu baris, sementara tanda centang tetap pada setiap interval kategori. Semua 24 kolom, termasuk yang tanpa label, tetap terlihat dengan nilai yang sama. Slide 3 mengembalikan tampilan otomatis yang ditunjukkan di atas.

Pilih Sumbu dan Interval yang Tepat
Gunakan interval hitung kategori ini untuk sumbu kategori teks, seperti sumbu kategori pada diagram kolom, garis, area, atau batang. Pada diagram kolom, ini adalah sumbu horizontal. Pada diagram batang horizontal, sumbu kategori berada secara vertikal, sehingga terapkan pengaturan ini ke vertical_axis. Spasi tanda centang juga berlaku pada sumbu seri dalam diagram yang memilikinya.
Jangan gunakan spasi label kategori untuk mengatur skala numerik pada sumbu nilai. Pada sumbu nilai, major_unit menentukan selisih nilai: misalnya, unit mayor 10 menghasilkan tanda centang pada 0, 10, 20, dan seterusnya ketika sumbu mulai dari nol. Interval label kategori 3 menghitung posisi kategori, terlepas dari nilai data mereka. Diagram batang sebar dan gelembung menggunakan sumbu nilai alih-alih sumbu kategori teks. Untuk sumbu tanggal, gunakan unit mayor berbasis waktu dan skala seperti yang dijelaskan di Ubah Sumbu Kategori.
Atur Format Tanggal untuk Nilai Sumbu Kategori
Contoh ini menggantikan data diagram default dengan empat nilai tahunan. Tanggal disimpan sebagai nomor serial OLE Automation pada lembar kerja pertama (indeks 0). Setel category_axis_type ke sumbu tanggal, nonaktifkan is_number_format_linked_to_source, dan tetapkan yyyy ke number_format sehingga label kategori menampilkan tahun empat digit secara independen dari format sel.
from datetime import date
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, 50, 50, 450, 300)
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.LINE)
for i in range(4):
category_date = date(2015 + i, 1, 1)
serial_date = (category_date - date(1899, 12, 30)).days
category_cell = workbook.get_cell(0, i + 1, 0, serial_date)
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(0, i + 1, 1, i + 1)
series.data_points.add_data_point_for_line_series(value_cell)
chart.axes.horizontal_axis.category_axis_type = charts.CategoryAxisType.DATE
chart.axes.horizontal_axis.is_number_format_linked_to_source = False
chart.axes.horizontal_axis.number_format = "yyyy"
presentation.save("DateAxisFormat.pptx", slides.export.SaveFormat.PPTX)
Atur Sudut Rotasi untuk Judul Sumbu Diagram
Aktifkan has_title pada sumbu vertikal, berikan teks judul, dan setel rotation_angle untuk memutar judul. Sudut diukur dalam derajat; contoh ini menyimpan diagram kolom dengan judul sumbu nilai diputar 90 derajat.
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, 50, 50, 450, 300)
chart.axes.vertical_axis.has_title = True
chart.axes.vertical_axis.title.add_text_frame_for_overriding("Value")
chart.axes.vertical_axis.title.text_format.text_block_format.rotation_angle = 90
presentation.save("RotatedAxisTitle.pptx", slides.export.SaveFormat.PPTX)
Atur Posisi Sumbu pada Sumbu Kategori atau Nilai
Gunakan axis_between_categories untuk mengontrol apakah sumbu nilai memotong sumbu kategori di antara kategori atau pada tanda centang kategori. Properti ini berlaku untuk sumbu kategori. Contoh menetapkannya ke True pada sumbu kategori horizontal diagram kolom dan menyimpan hasilnya.
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, 50, 50, 450, 300)
chart.axes.horizontal_axis.axis_between_categories = True
presentation.save("AxisBetweenCategories.pptx", slides.export.SaveFormat.PPTX)
Atur Satuan Tampilan pada Sumbu Nilai Diagram
Setel display_unit untuk menskalakan label pada sumbu nilai tanpa mengubah data yang mendasarinya. Dengan DisplayUnitType diatur ke MILLIONS, nilai 60.000.000 ditampilkan sebagai 60. Contoh ini membuat diagram kolom dan menerapkan satuan tampilan jutaan pada sumbu vertikalnya.
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, 50, 50, 450, 300)
chart.axes.vertical_axis.display_unit = charts.DisplayUnitType.MILLIONS
presentation.save("Result.pptx", slides.export.SaveFormat.PPTX)
FAQ
Bagaimana saya mengatur nilai di mana satu sumbu memotong sumbu lainnya (crossing sumbu)?
Gunakan cross_type untuk memilih perilaku pemotongan. Untuk menentukan nilai pemotongan numerik, setel cross_at. Pengaturan ini memungkinkan Anda memindahkan titik pemotongan sumbu ke baseline yang sesuai.
Bagaimana saya dapat memposisikan label tanda centang relatif terhadap sumbu?
Setel tick_label_position menggunakan TickLabelPositionType: LOW, HIGH, NEXT_TO, atau NONE. Untuk mengontrol tanda centang itu sendiri, gunakan major_tick_mark atau minor_tick_mark; keduanya terpisah dari penempatan label.