0

我想使用 java+awt (Graphics2D API) 绘制饼图。

我所有的值都存储在一个数组中,所以理论上我必须乘以 360 才能转换为度数。

并使用 x、y 坐标、起始角度和范围角度创建我的对象,但是当我绘制图表时我得到了这个。

饼形图

这是我的代码:

for(int i=0;i<pie.getNumDatos();i++){
            g2.setPaint(colores[i%colores.length]);
            double endDegree=valores[i].valor*360;
            Arc2D arcos=new Arc2D.Double(x, y,300,300,last,endDegree, Arc2D.PIE);
            last=endDegree;
            g2.fill(arcos);
            g2.draw(arcos);

        }  

我会试着解释一下。

pie.getNumDatos()是我的数据数组上的“块”数(等于 array.size())。

endDegree 是我用十进制表示的百分比(例如:第一个值的 0.25),乘以 360 得到弧的结束度。

last 是最后一个值的最后一个度数,所以理论上下一个值必须从最后一个值度数开始。

当我调试第一个和第二个值(实际上只有 3 个值)时一切正常,但在第三个值(蓝色)上出现问题。

难道我做错了什么?

4

0 回答 0