Free Support Forum - aspose.com

Java aspose-slides-16 圆环图的绘图区不能设置纵向坐标位置

圆环图 Doughnut
我想使用 IChart.getPlotArea().setY(0.25f); 这个方法调整 plotArea 的纵向位置,但是不生效,
是我用错了还是我少设置了什么参数?

【奇怪的是 IChart.getPlotArea().setX(0.25f); 是起作用的】

一些线索:经过研究,我发现在生成的PPT中,拖动 plotArea 时左右两侧有很奇怪的空白区域,可以参考附件中的图片圆环图的绘图区奇怪的空白.png (38.3 KB)1509615422487.zip (35.5 KB)

@cpych,

我已经在我的工作上使用Aspose.Slides for Java 17.10,并尝试为图表区域设置X和Y值。 设置Y值正在工作,为了您的方便,我共享了3个演示文件。 SavedChart.pptx为绘图区域设置了X和Y的默认值。 SavedVertical.pptx为绘图区域设置了Y值,您可以将其与默认显示进行比较。 我希望共享的信息会有所帮助。

public static void TestDoughnut()

{
String path=“C:\Aspose Data\”;

   Presentation pres=new Presentation();
   ISlide slide=pres.getSlides().get_Item(0);

   IChart chart=slide.getShapes().addChart(ChartType.Doughnut, 50, 50, 400, 300);

   double val=chart.getPlotArea().getX();
   //pres.save(path+"SavedChart.pptx",SaveFormat.Pptx);

   //chart.getPlotArea().setX(0.25f);
   //pres.save(path+"SavedHorizontal.pptx",SaveFormat.Pptx);
   // chart.getPlotArea().setX((float)val);

   chart.getPlotArea().setY(0.25f);
   pres.save(path+"SavedVertical.pptx",SaveFormat.Pptx);

}

SavedPres.zip (84.1 KB)

@mudassir.fayyaz

我们公司目前购买的是 aspose-slides-16.4.0.jar

我认为setY(0.25f) 在 16.4.0 版本上没有起作用

请您参考一下附件中的两张图片
actual.png (11.7 KB)
wanted.png (13.3 KB)

理论上应该是
setY(0.25f) : plotArea 的 Y起始于 chart 的 height * 0.25 的位置
但是运行结果,两者的 Y 起始位置是一样的

是不是对于 setY 这个方法我理解的有问题?还是 16.4.0 有 Bug

public static void TestDoughnut{
	String path = "C:\\Aspose Data\\";

	Presentation pres = new Presentation();
	ISlide slide = pres.getSlides().get_Item(0);

	IChart chart = slide.getShapes().addChart(ChartType.Doughnut, 50, 50, 400, 300);

	chart.getPlotArea().setY(0.25f);
	pres.save(path + "SavedVertical0.25.pptx", SaveFormat.Pptx);
}

@cpych,

我在最后使用最新的Aspose.Slides for Java 17.10进行了详细的调查。 有一个奇怪的问题是,为了看到小区的Y位置的影响,至少需要将小区的X位置设置为最小值。 我们在问题跟踪系统中创建了一个ID为SLIDESJAVA-36662 的问题,以进一步调查和解决问题。 暂时,我建议你请尝试使用下面的示例代码。

public static void TestChartPlotArea()
   {
   String path = "C:\\Aspose Data\\";

   Presentation pres = new Presentation();
   ISlide slide = pres.getSlides().get_Item(0);

   IChart chart = slide.getShapes().addChart(ChartType.Doughnut, 50, 50, 400, 400);

   chart.getPlotArea().setHeight(0.75f);
   //Set minimal X position atleast
   chart.getPlotArea().setX(0.005f);
   chart.getPlotArea().setY (1.0f);
      
   pres.save(path + "SavedVertical-0.5.pptx", SaveFormat.Pptx);
   }

SavedVertical-0.5.zip (28.3 KB)

@mudassir.fayyaz

多谢,我会关注 SLIDESJAVA-36662

我之前测试发现和 X值关系不大

Y值有三种情况
第一种:[0, 1) Y 在顶部
第二种:[1] Y 在底部
第三种:(-∞, 0) U (1, +∞) Y 不起作用

预期结果:在 [0, 1] 的取值区间内, Y 能被设置到相应的位置

非常感谢!!!

@cpych,

我观察过你们分享的情景。 X和Y的值可以设置在0到1之间。对于X,0表示左边,1表示右边。 在Y的情况下,0表示顶部,1表示底部。 我希望这是可以理解的。

@mudassir.fayyaz

目前 X 可以按照百分比设置位置
Y 函数的备注中说明的该函数也可以按照百分比设置位置,但是目前 Y 只有左边和右边两个位置,这个不是很灵活

最好的效果是按照原始设计的都可以按照百分比移动,
如果只有左边和右边,比较局限,很多细节不好实现

@cpych,

我已经观察到您的查询,并且提醒您可以将0和1之间的值设置为百分比,Y位置将相应设置。 我举两个例子来设定Y值。

@mudassir.fayyaz

您好,请问是不是少发了例子:yum:

@cpych,

对不起,我没有得到你的问题。 还有什么,我可以帮你。

The issues you have found earlier (filed as SLIDESJAVA-36662) have been fixed in this update. This message was posted using BugNotificationTool from Downloads module by mudassir.fayyaz