Telerik Kendo StockChart 列类型不显示 0 值的任何内容
Telerik Kendo StockChart column type doesn't display anything for 0 value
我有一张图表,你可以看到它on this link带有标记
但是当系列类型是列而不是行时,就像我的 link 一样,标记不会显示。即:
$("#chart").kendoChart({
dataSource: foreCast,
seriesDefaults: {
type: "column",
style: "smooth"
},
series: [{
field: "temperature",
categoryField: "day",
markers: {
size: 12,
visible: true
}
}],
valueAxis: {
labels: {
template: "#:value#℃"
}
},
});
在 telerik 的文档中,似乎没问题:
series.markers Object
Marker options.
** Applicable for area and line series. **
但问题是,当我的值等于零时,用户无法判断是否存在值,这对他们来说是个问题。
当值为 0 时是否存在绘制某些东西(如标记)的解决方法?
@David Shorthouse 在 answer/comment 上的扩展
你可以按照他的建议使用系列的visual property。在该函数中,您可以测试值为 0,然后绘制一个标记(在我的示例中为小半圆);对于非零值,根据传入的颜色和尺寸绘制一个规则条。
已更新JSBIN
visual: function (e) {
//get chart calculated coordinates of the bar and color
var xLeft = e.rect.topLeft().x;
var xRight = e.rect.topRight().x
var yTop = e.rect.origin.y;
var yBottom = e.rect.bottomRight().y;
var c = e.options.color;
if (e.value == 0){
//draw small (semi-)circle for zero values
var center = e.rect.center();
var circleGeometry = new kendo.geometry.Circle([center.x, center.y], 5);
var circle = new kendo.drawing.Circle(circleGeometry).stroke(c,2);
return circle;
} else {
//Draw a regular bar
var path = new kendo.drawing.Path({
fill: {color: c},
stroke: {color: c,opacity: 0.7,width: 2,}
})
.moveTo(xLeft, yBottom)
.lineTo(xRight, yBottom)
.lineTo(xRight, yTop)
.lineTo(xLeft, yTop)
.close();
return path;
}
}
我有一张图表,你可以看到它on this link带有标记
但是当系列类型是列而不是行时,就像我的 link 一样,标记不会显示。即:
$("#chart").kendoChart({
dataSource: foreCast,
seriesDefaults: {
type: "column",
style: "smooth"
},
series: [{
field: "temperature",
categoryField: "day",
markers: {
size: 12,
visible: true
}
}],
valueAxis: {
labels: {
template: "#:value#℃"
}
},
});
在 telerik 的文档中,似乎没问题:
series.markers Object Marker options. ** Applicable for area and line series. **
但问题是,当我的值等于零时,用户无法判断是否存在值,这对他们来说是个问题。
当值为 0 时是否存在绘制某些东西(如标记)的解决方法?
@David Shorthouse 在 answer/comment 上的扩展
你可以按照他的建议使用系列的visual property。在该函数中,您可以测试值为 0,然后绘制一个标记(在我的示例中为小半圆);对于非零值,根据传入的颜色和尺寸绘制一个规则条。
已更新JSBIN
visual: function (e) {
//get chart calculated coordinates of the bar and color
var xLeft = e.rect.topLeft().x;
var xRight = e.rect.topRight().x
var yTop = e.rect.origin.y;
var yBottom = e.rect.bottomRight().y;
var c = e.options.color;
if (e.value == 0){
//draw small (semi-)circle for zero values
var center = e.rect.center();
var circleGeometry = new kendo.geometry.Circle([center.x, center.y], 5);
var circle = new kendo.drawing.Circle(circleGeometry).stroke(c,2);
return circle;
} else {
//Draw a regular bar
var path = new kendo.drawing.Path({
fill: {color: c},
stroke: {color: c,opacity: 0.7,width: 2,}
})
.moveTo(xLeft, yBottom)
.lineTo(xRight, yBottom)
.lineTo(xRight, yTop)
.lineTo(xLeft, yTop)
.close();
return path;
}
}