【发布时间】:2016-06-05 19:51:45
【问题描述】:
我已经在互联网上搜索了几天使用 html 和 css 制作流程图(饼图和垂直)的方法,但我没有找到任何东西。有人用 html 和 css 制作这些类型的图表吗?可以帮忙我?
最后我找到了一种方法来制作这个图表,但我希望这些值是在 servlet 端计算的值。对于垂直饼图正在工作,但对于饼图没有(不显示)。另外我希望比例在我的最大值 (("${sumC}")=2000),现在是 60。 谁能帮我解决这些问题? 非常感谢!
这是我的 servlet 代码:
public class ListaCumparaturi extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try{
...
request.setAttribute("sumG", sumG);
request.setAttribute("sumCa", sumCa);
request.setAttribute("sumP", sumP);
request.setAttribute("sumC", sumC);
}
catch (Exception e2)
{
e2.printStackTrace();
}
finally
{
out.close();
}
}
}
这里是js代码:
<form action= "listacumparaturi" method="get">
<canvas width="1000" height="1000" id="myCanvas"></canvas>
var x= "${sumC}" ;
var y= "${sumG}" ; var z= "${sumP}" ; var w= "${sumCa}" ; total = "${sumT}";
var vertical = {
Calorii: x,
Grasimi: y,
Proteine: z,
Carbo: w
};
var data = Object.keys(vertical);
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.fillStyle = "blue";
total = "${sumT}";
color = ['red', 'blue', 'yellow','green','black'];
start = 0;
for (var i = 0; i < data.length; i++) {
ctx.fillRect((i * 60) + 50, 100, 10, -(vertical[data[i]]));
ctx.font = "9px Arial";
ctx.fillText(data[i], (i * 60) + 51, 112);
ctx.fillText((700 * i), 30, ((20 * -i) + 100));
ctx.beginPath();
ctx.moveTo(600, 150);
ctx.arc(600, 150, 150, start, start +
(Math.PI * 2 * (vertical[data[i]] / total)), false);
ctx.lineTo(600, 150);
ctx.fillStyle = color[i];
ctx.fill();
start += Math.PI * 2 * (vertical[data[i]] / total);
}
</script>
</form>
【问题讨论】:
-
如果你对 css3 没有问题,你可以使用thecodeplayer.com/walkthrough/css3-family-tree
-
没有制作饼图或垂直图。我现在不知道如何修改该代码以获得我想要的:(
-
您应该提供一些代码来查看您拥有的 HTML 以及到目前为止您尝试过的 CSS ...