我想使用 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 个值)时一切正常,但在第三个值(蓝色)上出现问题。
难道我做错了什么?