Java Kullanarak Sunumlarda Grafik Eksenlerini Özelleştirme
Genel Bakış
Bu makale, Aspose.Slides for Java ile grafik eksenlerini nasıl özelleştireceğinizi açıklar. Hesaplanmış eksen değerleri, grafik satır ve sütunlarının değiştirilmesi, eksen görünürlüğü, kategori etiketi ve işaretçi aralıkları, tarih kategorileri ve biçimlendirme, başlık döndürme, eksen konumlandırma ve görüntü birimleri konularını kapsar.
Grafiklerde Dikey Eksenin Maksimum Değerlerini Al
Bir Sunum oluşturun ve varsayılan veriyle bir alan grafiği ekleyin. Hesaplanmış eksen değerlerini okumadan önce grafik yerleşiminin güncel olması için validateChartLayout çağırın.
Eksen sınırları için getActualMaxValue ve getActualMinValue okun, işaretçi aralıkları için getActualMajorUnit ve getActualMinorUnit çağırın. Tarih eksenleriyle ilgili zaman birimi ölçeklerini elde etmek için getActualMajorUnitScale ve getActualMinorUnitScale kullanılır. Örnek bu değerleri yerel değişkenlerde saklar ve grafiği kaydeder.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.Area, 100, 100, 500, 350);
chart.validateChartLayout();
double maxValue = chart.getAxes().getVerticalAxis().getActualMaxValue();
double minValue = chart.getAxes().getVerticalAxis().getActualMinValue();
double majorUnit = chart.getAxes().getVerticalAxis().getActualMajorUnit();
double minorUnit = chart.getAxes().getVerticalAxis().getActualMinorUnit();
int majorUnitScale = chart.getAxes().getVerticalAxis().getActualMajorUnitScale();
int minorUnitScale = chart.getAxes().getVerticalAxis().getActualMinorUnitScale();
presentation.save("AxisValues_out.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Verileri Eksenler Arasında Değiştir
Grafik verilerindeki seriler ve kategorilerin rollerini değiştirmek için switchRowColumn kullanın. Her eski kategori bir seri, her eski seri ise bir kategori olur. Bu, verilerin gruplama biçimini değiştirir; yatay ve dikey eksenleri değiştirmez. Örnek, satır ve sütunları değiştirmeden önce varsayılan verileri Sheet1!A1:D5 aralığına (başlık satırı ve kategori sütunu dahil) bağlamak için setRange kullanır. Dört seri ve üç kategori içeren bir grafik kaydeder.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 100, 100, 400, 300);
chart.getChartData().setRange("Sheet1!A1:D5");
chart.getChartData().switchRowColumn();
presentation.save("SwitchChartRowColumns_out.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Çizgi Grafiklerinde Dikey Ekseni Devre Dışı Bırak
Dikey ekseni gizlemek için false ile setVisible çağırın. Örnek, varsayılan veriyle bir çizgi grafik oluşturur ve dikey ekseni gizlenmiş olarak kaydeder.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.Line, 100, 100, 400, 300);
chart.getAxes().getVerticalAxis().setVisible(false);
presentation.save("HiddenVerticalAxis.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Çizgi Grafiklerinde Yatay Ekseni Devre Dışı Bırak
Yatay ekseni gizlemek için false ile setVisible çağırın. Örnek, varsayılan veriyle bir çizgi grafik oluşturur ve yatay ekseni gizlenmiş olarak kaydeder.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.Line, 100, 100, 400, 300);
chart.getAxes().getHorizontalAxis().setVisible(false);
presentation.save("HiddenHorizontalAxis.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Bir Kategori Ekseni Değiştir
Tarih ya da metin kategori ekseni seçmek için setCategoryAxisType kullanın. Bu örnek, ilk slayttaki ilk şekil olarak bir grafik içeren ve kategori hücrelerinde sayısal Excel tarih değerleri bulunan ExistingChart.pptx dosyasına ihtiyaç duyar. Yatay ekseni bir tarih eksenine dönüştürür. setAutomaticMajorUnit false, setMajorUnit 1 ve setMajorUnitScale TimeUnitType.Months ile ana işaretçileri bir‑ay aralıklarında ayarlar.
import com.aspose.slides.*;
Presentation presentation = new Presentation("ExistingChart.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = (IChart) slide.getShapes().get_Item(0);
chart.getAxes().getHorizontalAxis().setCategoryAxisType(CategoryAxisType.Date);
chart.getAxes().getHorizontalAxis().setAutomaticMajorUnit(false);
chart.getAxes().getHorizontalAxis().setMajorUnit(1);
chart.getAxes().getHorizontalAxis().setMajorUnitScale(TimeUnitType.Months);
presentation.save("ChangeChartCategoryAxis_out.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Kategori Ekseni Etiket Aralıklarını Kontrol Et
Bir grafikte çok sayıda kategori olduğunda, kategori ya da veri noktasını kaldırmadan görünür eksen etiketlerinin sayısını azaltabilirsiniz. İlk olarak setAutomaticTickLabelSpacing false ile kapatın, ardından istediğiniz kategori aralığını setTickLabelSpacing ile geçirin. Normal sıralı metin kategorileri için sayma ilk kategoriden başlar:
| Aralık | Örnekte Görüntülenen Etiketler |
|---|---|
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 |
3 aralığı, her üçüncü etiketi gösterir; gösterilen etiketler arasında iki etiket gizli kalır. İlgili sütunlar kaldırılmaz. Otomatik aralık, kullanılabilir alana göre bir aralık seçer; bu, her etiketi göstereceği anlamına gelmez.
İşaretçi işaretleri ayrı kontrollerle ayarlanır. setAutomaticTickMarksSpacing false ile kapatın ve aralıklarını belirlemek için setTickMarksSpacing kullanın. Örneğin, 1 her kategori aralığında bir işaretçi bırakırken etiketler yalnızca her üçüncü kategoride görünür. Görünür bir stil elde etmek için setMajorTickMark int değerini kullanın. Otomatik‑aralık ayarlarını true yaparsanız grafik yeniden otomatik aralığı seçer.
Aşağıdaki bağımsız örnek 24 kategori ve bir seri oluşturur, ardından CategoryAxisIntervals.pptx içinde üç slayt kaydeder: otomatik aralık, bağımsız işaretçilerle manuel etiket aralığı ve otomatik aralığın geri yüklenmesi. İki kopya özgün grafik verisini korur. Giriş sunumu gerekmez. Yatay etiket metni yoğunluk farkını net görmenizi sağlar.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 30, 40, 660, 320);
chart.setLegend(false);
chart.getChartData().getCategories().clear();
chart.getChartData().getSeries().clear();
IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
workbook.clear(0);
IChartSeries series = chart.getChartData().getSeries().add(ChartType.ClusteredColumn);
for (int i = 0; i < 24; i++) {
IChartDataCell categoryCell = workbook.getCell(0, i + 1, 0, "Category " + (i + 1));
chart.getChartData().getCategories().add(categoryCell);
IChartDataCell valueCell = workbook.getCell(0, i + 1, 1, 10 + i % 6 * 5);
series.getDataPoints().addDataPointForBarSeries(valueCell);
}
IAxis axis = chart.getAxes().getHorizontalAxis();
axis.setCategoryAxisType(CategoryAxisType.Text);
axis.getTextFormat().getTextBlockFormat().setRotationAngle(0);
axis.getTextFormat().getPortionFormat().setFontHeight(12);
axis.setMajorTickMark(TickMarkType.Outside);
axis.setAutomaticTickLabelSpacing(true);
axis.setAutomaticTickMarksSpacing(true);
// Slayt 2: her üçüncü etiketi göster, ancak her kategori için bir işaretçi tut.
ISlide manualSlide = presentation.getSlides().addClone(slide);
IChart manualChart = (IChart)manualSlide.getShapes().get_Item(0);
IAxis manualAxis = manualChart.getAxes().getHorizontalAxis();
manualAxis.setAutomaticTickLabelSpacing(false);
manualAxis.setTickLabelSpacing(3);
manualAxis.setAutomaticTickMarksSpacing(false);
manualAxis.setTickMarksSpacing(1);
// Slayt 3: grafiğin her iki aralığı da yeniden seçmesine izin ver.
ISlide restoredSlide = presentation.getSlides().addClone(manualSlide);
IChart restoredChart = (IChart)restoredSlide.getShapes().get_Item(0);
restoredChart.getAxes().getHorizontalAxis().setAutomaticTickLabelSpacing(true);
restoredChart.getAxes().getHorizontalAxis().setAutomaticTickMarksSpacing(true);
presentation.save("CategoryAxisIntervals.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Otomatik aralık (slayt 1): Bu renderda her ikinci kategori etiketi gösterilir ve iki satıra dökülür. Otomatik sonuç grafik boyutu, yazı tipleri ve renderlayıcıya göre değişebilir.

Manuel aralık (slayt 2): Her üçüncü etiket tek satırda gösterilir, işaretçiler ise her kategori aralığında kalır. Etiketsiz olanlar dahil olmak üzere tüm 24 sütun aynı değerlerle görünür. Slayt 3, yukarıdaki otomatik görünümü geri yükler.

Doğru Eksen ve Aralığı Seç
Metin kategori ekseni için bu kategori‑sayısı aralığını kullanın; örneğin bir sütun, çizgi, alan ya da çubuk grafiğinin kategori ekseni. Sütun grafiğinde bu, yatay eksendir. Yatay çubuk grafiğinde kategori ekseni diktir; bu ayarları getVerticalAxis ile dönen eksene uygulayın. İşaretçi aralığı, bir serinin eksenine sahip grafiklerde de geçerlidir.
Sayısal değer ekseninin ölçeğini ayarlamak için kategori etiketi aralığını kullanmayın. Değer ekseninde setMajorUnit bir değer farkı belirtir: örneğin 10 bir birim, eksen sıfırdan başlıyorsa 0, 10, 20 … şeklinde işaretçileri üretir. 3 aralığındaki bir kategori etiketi ise veri değerlerinden bağımsız olarak kategori konumlarını sayar. Dağılım ve balon grafikler, metin kategori ekseni yerine değer eksenleri kullanır. Tarih ekseni için, Change a Category Axis bölümünde açıklandığı gibi zaman‑tabanlı ana birimler ve ölçekler kullanın.
Kategori Ekseni Değerleri İçin Tarih Biçimini Ayarla
Örnek, varsayılan grafik verisini dört yıllık değerle değiştirir. Tarihler, ilk çalışma sayfasında (indeks 0) OLE Automation seri numaraları olarak saklanır; bu sayılar 30 Aralık 1899’dan itibaren gün sayısıdır. setCategoryAxisType CategoryAxisType.Date ile ayarlayın, ardından setNumberFormatLinkedToSource false ve setNumberFormat yyyy ile hücre biçiminden bağımsız olarak dört haneli yıl gösteren etiketler elde edin.
import com.aspose.slides.*;
import java.time.LocalDate;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.Line, 50, 50, 450, 300);
chart.getChartData().getCategories().clear();
chart.getChartData().getSeries().clear();
IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
workbook.clear(0);
LocalDate baseDate = LocalDate.of(1899, 12, 30);
IChartSeries series = chart.getChartData().getSeries().add(ChartType.Line);
for (int i = 0; i < 4; i++) {
LocalDate date = LocalDate.of(2015 + i, 1, 1);
IChartDataCell categoryCell = workbook.getCell(0, i + 1, 0, date.toEpochDay() - baseDate.toEpochDay());
chart.getChartData().getCategories().add(categoryCell);
IChartDataCell valueCell = workbook.getCell(0, i + 1, 1, i + 1);
series.getDataPoints().addDataPointForLineSeries(valueCell);
}
chart.getAxes().getHorizontalAxis().setCategoryAxisType(CategoryAxisType.Date);
chart.getAxes().getHorizontalAxis().setNumberFormatLinkedToSource(false);
chart.getAxes().getHorizontalAxis().setNumberFormat("yyyy");
presentation.save("DateAxisFormat.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Grafik Eksen Başlığı İçin Döndürme Açısı Ayarla
Dikey eksende başlığı etkinleştirmek için setTitle true çağırın, başlık metnini sağlayın ve ardından başlığı döndürmek için setRotationAngle kullanın. Açı derece cinsindendir; bu örnek, değer‑ekseni başlığını 90 derece döndürmüş bir sütun grafiği kaydeder.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300);
chart.getAxes().getVerticalAxis().setTitle(true);
chart.getAxes().getVerticalAxis().getTitle().addTextFrameForOverriding("Value");
chart.getAxes().getVerticalAxis().getTitle().getTextFormat().getTextBlockFormat().setRotationAngle(90);
presentation.save("RotatedAxisTitle.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Kategori veya Değer Ekseni Üzerinde Eksen Konumunu Ayarla
Değer ekseninin kategori eksenini kategoriler arasında mı yoksa kategori işaretlerinde mi kesmesi gerektiğini kontrol etmek için setAxisBetweenCategories kullanın. Bu ayar yalnızca kategori eksenlerine uygulanır. Örnek, bir sütun grafiğinin yatay kategori ekseninde bunu true yapar ve sonucu kaydeder.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300);
chart.getAxes().getHorizontalAxis().setAxisBetweenCategories(true);
presentation.save("AxisBetweenCategories.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Grafik Değer Ekseninde Görüntü Birimini Ayarla
Veri değişmeden değer ekseni etiketlerini ölçeklendirmek için setDisplayUnit kullanın. DisplayUnitType Millions olarak ayarlandığında 60 000 000 değeri 60 şeklinde gösterilir. Örnek bir sütun grafik oluşturur ve dikey eksenine milyonlar görüntü birimini uygular.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300);
chart.getAxes().getVerticalAxis().setDisplayUnit(DisplayUnitType.Millions);
presentation.save("Result.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
SSS
Bir eksenin diğerini kestiği değeri (eks kesişmesi) nasıl ayarlarım?
Kesişme davranışını seçmek için setCrossType kullanın. Sayısal bir kesişme değeri belirtmek için setCrossAt çağırın. Bu ayarlar, eksen kesişmesini uygun bir temel çizgiye taşımanıza olanak tanır.
İşaretçi etiketlerini eksene göre nasıl konumlandırırım?
TickLabelPositionType üzerinden Low, High, NextTo veya None değerlerinden birini kullanarak setTickLabelPosition çağırın. İşaretçi işaretçilerini kontrol etmek için setMajorTickMark veya setMinorTickMark kullanın; bunlar etiket konumlandırmadan ayrı olarak ayarlanır.