首页在页面中要引用highcharts的脚本文件:
<script src="/js/highcharts.js" type="text/javascript"></script>
<script type="text/javascript" src="/js/highcharts-more.js"></script>
下面是封装的代码:
/// <summary>
/// 转出渐变饼图
/// </summary>
/// <param name="containerId">要放置图表的容器的ID</param>
/// <param name="title">图表上方的文字</param>
/// <param name="name">鼠标移上饼图时,显示在提示前面的文字</param>
/// <param name="dataStr">图表数据,形式如:['Firefox',700],['IE',800],['Safari',300]或{name:'IE', y:26.8},{name: 'Chrome',y: 12.8,sliced: true,selected: true}</param>
/// <param name="isNeedClick">是否需要加点击事件,如果需要,则设置scriptStr的值</param>
/// <param name="scriptStr">要附加的脚本,写在function中的内容,不用写function(){},直接写内容即可</param>
/// <returns></returns>
public static string GetPieChar(string containerId, string title, string name, string dataStr,string unit="吨",bool isNeedClick=false,string scriptStr=null)
{
StringBuilder sb = new StringBuilder();
sb.Append("Highcharts.getOptions().colors = Highcharts.map(Highcharts.getOptions().colors, function(color) {\r\n");
sb.Append(" return {\r\n");
sb.Append(" radialGradient: { cx: 0.5, cy: 0.3, r: 0.7 },\r\n");
sb.Append(" stops: [\r\n");
sb.Append(" [0, color],\r\n");
sb.Append(" [1, Highcharts.Color(color).brighten(-0.3).get('rgb')] // darken\r\n");
sb.Append(" ]\r\n");
sb.Append(" };\r\n");
sb.Append("});\r\n");
sb.Append(" $('#" + containerId + "').highcharts({\r\n");
sb.Append(" chart: {\r\n");
sb.Append(" plotBackgroundColor: null,\r\n");
sb.Append(" plotBorderWidth: null,\r\n");
sb.Append(" plotShadow: false\r\n");
sb.Append(" },\r\n");
sb.Append(" title: {\r\n");
sb.Append(" text: '"+title+"'\r\n");
sb.Append(" },\r\n");
sb.Append(" tooltip: {\r\n");
sb.Append(" pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'\r\n");
sb.Append(" },\r\n");
sb.Append(" plotOptions: {\r\n");
sb.Append(" pie: {\r\n");
sb.Append(" allowPointSelect: true,\r\n");
sb.Append(" cursor: 'pointer',\r\n");
sb.Append(" dataLabels: {\r\n");
sb.Append(" enabled: true,\r\n");
sb.Append(" color: '#000000',\r\n");
sb.Append(" connectorColor: '#000000',\r\n");
sb.Append(" formatter: function() {\r\n");
sb.Append(" return '<b>'+ this.point.name +'</b>: '+ this.y+' "+unit+"';\r\n");
sb.Append(" }\r\n");
sb.Append(" }\r\n");
sb.Append(" }\r\n");
sb.Append(" },\r\n");
sb.Append(" series: [{\r\n");
sb.Append(" type: 'pie',\r\n");
sb.Append(" name: '"+name+"',\r\n");
sb.Append(" data: [\r\n");
sb.Append(" "+dataStr+"\r\n");
sb.Append(" ]\r\n");
if (isNeedClick)
{
sb.Append(" ,events:{\r\n");
sb.Append(" 'click':function(e){\r\n");
sb.Append(scriptStr);
sb.Append(" }\r\n");
sb.Append(" }\r\n");
}
sb.Append(" }]\r\n");
sb.Append(" });\r\n");
return sb.ToString();
}