如何在KendoUI条形图中使条形图成为不同的颜色?

我正在用KendoUI取代我的dot net charting。 我正在显示分数分布图表。 我希望所有的条形图都是相同的颜色,除了具有中位数分数和图例的条形图。 如何为单个条纹着色独特的颜色? 我如何为这款新颜色上色?

下面是我的旧dotnet图表条形图,下面是我正在尝试替换它的新KendoUI图表。 我只需要正确地着色,我们就会开展业务。 任何帮助表示赞赏。

在此处输入图像描述

更新:如果有那些使用较旧版本的人,我将保留此行下方的答案,但是根据后来的评论 ,KendoUI现在允许您覆盖系列中各个点的样式。


在当前版本中,我不相信你可以。 也就是说,你可以破解你的限制。

您需要创建两个数据系列 – 一个用于突出显示的数据,另一个用于其他所有数据。 将两者添加到图表中,并将它们设置为堆叠。

这是一个jsFiddle我放在一起来说明: http : //jsfiddle.net/LyndsySimon/9VZdS/ 。 这取决于KendoUI的CDN,所以如果将来打破我道歉。

这是Javascript供参考:

$(function() { var dataset = new Array(1,2,3,null,5,6); var highlighted = new Array(null,null,null,4,null,null); $('#chart').kendoChart({ theme: 'metro', seriesDefaults: { type: 'column', stack: true }, series: [ { name: 'Not Highlighted', data: dataset, color: '#609' }, { name: 'Highlighted', data: highlighted, color: '#f03' } ] }) });​ 

从2012 Q2版本开始,bar系列支持将点颜色绑定到数据项字段。

这是通过colorField选项完成的。 绑定到本地数据在线示例演示了它。

Kendo UI和ASP.NET MVC的旧包装都将它作为一个选项公开:

 .Series(series => { series.Bar(model => model.Value, model => model.Color) .Name("United States"); }) 

所有系列过载都可以在这里看到。

你可以破解系统生成的SVG。 我已经为图表提供了一个模型,其中包含每个条形图的颜色。 例如:

 public class Model { public int Id { get; set; } public string Name { get; set; } public string Code { get; set; } public string Colour { get; set; } public decimal Score { get; set; } } 

在图表中用作系列。 然后视图看起来像:

 @(Html.Telerik().Chart(Model) .Name("AverageScores") .Theme("Simple") .HtmlAttributes(new {style = "height: 500px"}) .Series(series => series.Column(s => s.Score).Name("Name").Color("Blue")) .SeriesDefaults(sd => sd.Column().Labels(l => { l.Visible(true); l.Format("{0}%"); })) .Title("Mean Percentage Scores") .Legend(builder => { builder.Position(ChartLegendPosition.Bottom); builder.Visible(false); }) .CategoryAxis(ca => ca.Categories(x => x.Code)) .Tooltip(builder => { builder.Visible(true); builder.Format("{0}%"); builder.Template("<#= dataItem.Name #>
<#= value #>%"); }) .ValueAxis(va => va.Numeric().Labels(a => a.Format("{0}%")).Min(0).Max(100) ) ) @section BelowTelerikScriptRegistrar { }

必须在调用Html.Telerik()。ScriptRegistrar()之后发生BelowTelerikScriptRegistrar部分。

这适用于Chrome,Firefox和IE10。 我注意到多个图表和SVG生成的时间存在问题。 不幸的是,您可能必须在setTimeout函数中包装setAverageScoresColours()以确保已生成SVG,但它似乎仅适用于一个图表。

有点hacky,但比管理很多系列更容易。

对于KendoUI(我为...编辑过):

 

在运行时可以使用的另一种方法是使用返回颜色的函数。

API参考

这是一个示例代码:

 

目前的KendoUI版本目前无法实现。

这是他们的待办事项清单。

http://www.kendoui.c​​om/forums/dataviz/chart/change-bar-column-color-for-each-point.aspx

可以有一种解决方法,正如我在这里提到的线程中所说,它将描述您需要的每种颜色的系列。 它对我来说效率很低,但它是目前唯一的方法。 如果您只有1个图表,则可以执行此操作。 否则,请使用此function等待新版本的KendoUI。

Telerik最近发布了一个Kendo UI Data Vis主题滚轮

http://demos.kendoui.c​​om/themebuilder/dataviz.html