如何将数字添加到我的 morris.js 圆环图图例中?
How can I add a number to my morris.js donut chart legend?
我有几个 morris.js 图表,它们根据某些搜索词从我的数据库中填充。我使用以下代码为 mmy 圆环图构建 "Legend"。代码工作正常,但我正在努力添加数字和文本,我收到控制台错误:“ReferenceError:未定义值,这是我当前使用的代码(效果很好):
// Build the Donut:
var donut = Morris.Donut({
element: 'donut',
data : donutParts,
colors: color_array
});
// Build the Legend:
donut.options.data.forEach(function(label, i){
var legendItem = $('<span></span>').text(label['label']).prepend('<i> </i>');
legendItem.find('i').css('backgroundColor', donut.options.colors[i]);
$('#legend').append(legendItem)
})
这会给我一个带有匹配颜色方块和适当标签的图例,例如:
[red] UK
但我想要:
[red] # UK
我试过使用 .integer
和其他类似的变体:
// Build the Donut:
var donut = Morris.Donut({
element: 'donut',
data : donutParts,
colors: color_array
});
// Build the Legend:
donut.options.data.forEach(function(label, i){
var legendItem = $('<span></span>').text(label['label']).integer(['value']).prepend('<i> </i>');
legendItem.find('i').css('backgroundColor', donut.options.colors[i]);
$('#legend').append(legendItem)
})
但这给了我未定义值的错误,我想从 donutParts
中获取 value(v)
这是我的 donutParts 变量:
// Fetch the data to populate the donut chart:
var chartData = JSON.parse( $('#chartData').val() );
// Break up the object into parts of the donut:
var donutParts = [];
$.each( chartData, function(k,v){
donutParts.push({
label: k,
value: v
});
});
有什么帮助吗?干杯!
***** 回答 *****
以下代码给出了所需的输出:
// Build the Legend:
donut.options.data.forEach(function(label, i){
var legendItem = $('<span></span>').text(label['value']+" "+label['label']).prepend('<i> </i>');
legendItem.find('i').css('backgroundColor', donut.options.colors[i]);
$('#legend').append(legendItem)
})
这是执行给定答案后图例输出的 SS
非常感谢@WillParky93
所以我在评论中所说的在技术上是错误的,但在进一步阅读后,这就是 'donut.options.data.forEach' 正在做的事情。
创建 <span></span>
的对象 dom -> 添加来自标签 ['label'] 的文本(在你的示例中似乎是 UK) -> 添加一些 <i>
标签。
那么
找到新创建的标签 -> 添加背景颜色
的 CSS 规则
那么
将它添加到您的#legend
所以这样想其实解法更简单;答案就是这样:
// Build the Legend:
donut.options.data.forEach(function(label, i){
var legendItem = $('<span></span>').text(label['value']+" "+label['label']).prepend('<i> </i>');
legendItem.find('i').css('backgroundColor', donut.options.colors[i]);
$('#legend').append(legendItem)
})
变化发生在 .text(label['label'])
,现在是 .text(label['value']+" "+label['label'])
我有几个 morris.js 图表,它们根据某些搜索词从我的数据库中填充。我使用以下代码为 mmy 圆环图构建 "Legend"。代码工作正常,但我正在努力添加数字和文本,我收到控制台错误:“ReferenceError:未定义值,这是我当前使用的代码(效果很好):
// Build the Donut:
var donut = Morris.Donut({
element: 'donut',
data : donutParts,
colors: color_array
});
// Build the Legend:
donut.options.data.forEach(function(label, i){
var legendItem = $('<span></span>').text(label['label']).prepend('<i> </i>');
legendItem.find('i').css('backgroundColor', donut.options.colors[i]);
$('#legend').append(legendItem)
})
这会给我一个带有匹配颜色方块和适当标签的图例,例如:
[red] UK
但我想要:
[red] # UK
我试过使用 .integer
和其他类似的变体:
// Build the Donut:
var donut = Morris.Donut({
element: 'donut',
data : donutParts,
colors: color_array
});
// Build the Legend:
donut.options.data.forEach(function(label, i){
var legendItem = $('<span></span>').text(label['label']).integer(['value']).prepend('<i> </i>');
legendItem.find('i').css('backgroundColor', donut.options.colors[i]);
$('#legend').append(legendItem)
})
但这给了我未定义值的错误,我想从 donutParts
value(v)
这是我的 donutParts 变量:
// Fetch the data to populate the donut chart:
var chartData = JSON.parse( $('#chartData').val() );
// Break up the object into parts of the donut:
var donutParts = [];
$.each( chartData, function(k,v){
donutParts.push({
label: k,
value: v
});
});
有什么帮助吗?干杯!
***** 回答 ***** 以下代码给出了所需的输出:
// Build the Legend:
donut.options.data.forEach(function(label, i){
var legendItem = $('<span></span>').text(label['value']+" "+label['label']).prepend('<i> </i>');
legendItem.find('i').css('backgroundColor', donut.options.colors[i]);
$('#legend').append(legendItem)
})
这是执行给定答案后图例输出的 SS
非常感谢@WillParky93
所以我在评论中所说的在技术上是错误的,但在进一步阅读后,这就是 'donut.options.data.forEach' 正在做的事情。
创建 <span></span>
的对象 dom -> 添加来自标签 ['label'] 的文本(在你的示例中似乎是 UK) -> 添加一些 <i>
标签。
那么
找到新创建的标签 -> 添加背景颜色
的 CSS 规则
那么
将它添加到您的#legend
所以这样想其实解法更简单;答案就是这样:
// Build the Legend:
donut.options.data.forEach(function(label, i){
var legendItem = $('<span></span>').text(label['value']+" "+label['label']).prepend('<i> </i>');
legendItem.find('i').css('backgroundColor', donut.options.colors[i]);
$('#legend').append(legendItem)
})
变化发生在 .text(label['label'])
,现在是 .text(label['value']+" "+label['label'])