use*_*583 28 javascript charts
我正在显示饼图.但是如何在饼图中显示标签.
下面是饼图的chart.js代码.
this.Pie = function(data, options) {
chart.Pie.defaults = {
segmentShowStroke: true,
segmentStrokeColor: "#fff",
segmentStrokeWidth: 2,
animation: true,
animationSteps: 100,
animationEasing: "easeOutBounce",
animateRotate: true,
animateScale: false,
onAnimationComplete: null
};
var config = (options) ? mergeChartConfig(chart.Pie.defaults, options) : chart.Pie.defaults;
return new Pie(data, config, context);
};
Run Code Online (Sandbox Code Playgroud)
以下是用于显示饼图的html文件的代码
码:
var data = [{
value: 20,
color: "#637b85"
}, {
value: 30,
color: "#2c9c69"
}, {
value: 40,
color: "#dbba34"
}, {
value: 10,
color: "#c62f29"
}];
var canvas = document.getElementById("hours");
var ctx = canvas.getContext("2d");
new Chart(ctx).Pie(data);
Run Code Online (Sandbox Code Playgroud)
Iva*_*mov 40
没有必要使用像newChart这样的其他库,或者使用其他人的拉取请求来关闭它.您所要做的就是定义一个选项对象,并在工具提示中随处添加标签.
var optionsPie = {
tooltipTemplate: "<%= label %> - <%= value %>"
}
Run Code Online (Sandbox Code Playgroud)
如果您希望始终显示工具提示,您可以对选项进行一些其他编辑:
var optionsPie = {
tooltipEvents: [],
showTooltips: true,
onAnimationComplete: function() {
this.showTooltip(this.segments, true);
},
tooltipTemplate: "<%= label %> - <%= value %>"
}
Run Code Online (Sandbox Code Playgroud)
在您的数据项中,您必须添加所需的标签属性和值,这就是全部.
data = [
{
value: 480000,
color:"#F7464A",
highlight: "#FF5A5E",
label: "Tobacco"
}
];
Run Code Online (Sandbox Code Playgroud)
现在,您所要做的就是将数据之后的options对象传递给新的Pie,就像这样:new Chart(ctx).Pie(data,optionsPie)完成了.
这对于尺寸不是很小的馅饼来说效果最好.
Fir*_*ess 16
编辑:http://jsfiddle.net/nCFGL/223/ 我的例子.
你应该能够喜欢以下内容:
var pieData = [{
value: 30,
color: "#F38630",
label: 'Sleep',
labelColor: 'white',
labelFontSize: '16'
},
...
];
Run Code Online (Sandbox Code Playgroud)
包括位于以下位置的Chart.js:
https://github.com/nnnick/Chart.js/pull/35
Rachel的解决方案工作正常,但您需要使用raw.githubusercontent.com中的第三方脚本
到目前为止,在宣传"模块化"脚本时,它们会在着陆页上显示一项功能.您可以在此处看到具有此结构的图例:
<div class="labeled-chart-container">
<div class="canvas-holder">
<canvas id="modular-doughnut" width="250" height="250" style="width: 250px; height: 250px;"></canvas>
</div>
<ul class="doughnut-legend">
<li><span style="background-color:#5B90BF"></span>Core</li>
<li><span style="background-color:#96b5b4"></span>Bar</li>
<li><span style="background-color:#a3be8c"></span>Doughnut</li>
<li><span style="background-color:#ab7967"></span>Radar</li>
<li><span style="background-color:#d08770"></span>Line</li>
<li><span style="background-color:#b48ead"></span>Polar Area</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
为此,他们使用图表配置选项 legendTemplate
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>"
Run Code Online (Sandbox Code Playgroud)
你可以在chartjs.org上找到这里的doumentation. 这适用于所有的图表,虽然它不是全局图表配置的一部分.
然后他们创建图例并将其添加到DOM,如下所示:
var legend = myPie.generateLegend();
$("#legend").html(legend);
Run Code Online (Sandbox Code Playgroud)
示例 请参阅我的JSFiddle示例
使用ChartNew.js而不是Chart.js
...
所以,我重新开发了Chart.js.大多数更改都与Chart.js的"GitHub"问题中的请求相关联.
这里有一个示例http://jsbin.com/lakiyu/2/edit
var newopts = {
inGraphDataShow: true,
inGraphDataRadiusPosition: 2,
inGraphDataFontColor: 'white'
}
var pieData = [
{
value: 30,
color: "#F38630",
},
{
value: 30,
color: "#F34353",
},
{
value: 30,
color: "#F34353",
}
]
var pieCtx = document.getElementById('pieChart').getContext('2d');
new Chart(pieCtx).Pie(pieData, newopts);
Run Code Online (Sandbox Code Playgroud)
它甚至提供了一个GUI编辑器http://charts.livegap.com/
如此甜蜜.