我想使用java + awt(Graphics2D API)绘制饼图。
我的所有值都存储在一个数组中,因此理论上我必须乘以360才能转换为度数。
使用x,y coordenates,开始角度和范围角度创建我的对象,但是当我绘制图表时我得到了这个...
这是我的代码:
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个值)但是第三个值(蓝色)有些问题。
我做错了吗?