2013-04-24 42 views
0

我使用来自道场制图的ThreeD主题显示图形。 当我修改数据以便我可以为图中某些 条显示不同的颜色时,我将失去3D外观。对于ThreeD他们改变道场制图上的颜色ThreeD主题

默认的颜色是红色

{Y: “15”,提示: “15个报警信息”,填写: '黄'}

添加 '填充:黄' 上的数据项的变化酒吧变黄, 但我失去了3D的外观。

关于改变主色调和保持3D外观的最佳方式的任何想法?

回答

0

我能够抓住从ThreeD.js的代码,并把它应用到我的应用程序来实现:

var colors = ["#f00", "#0f0", "#00f", "#ff0", "#0ff", "#f0f", "dojox/charting/themes/common"]; 
var defaultFill = {type: "linear", space: "shape", x1: 0, y1: 0, x2: 100, y2: 0}; 
    // 3D cylinder map is calculated using dojox.gfx3d 
var cyl3dMap = [ 
     {o: 0.00, i: 174}, {o: 0.08, i: 231}, {o: 0.18, i: 237}, {o: 0.30, i: 231}, 
     {o: 0.39, i: 221}, {o: 0.49, i: 206}, {o: 0.58, i: 187}, {o: 0.68, i: 165}, 
     {o: 0.80, i: 128}, {o: 0.90, i: 102}, {o: 1.00, i: 174} 
     ]; 

var hiliteIndex = 2; 
var hiliteIntensity = 100; 
var lumStroke = 50; 
var cyl3dFills = ArrayUtil.map(colors, function(c){ 
    var fill = lang.delegate(defaultFill); 
    var colors = fill.colors = gradientGenerator.generateGradientByIntensity(c, cyl3dMap), 
     hilite = colors[hiliteIndex].color; 
     // add highlight 
     hilite.r += hiliteIntensity; 
     hilite.g += hiliteIntensity; 
     hilite.b += hiliteIntensity; 
     hilite.sanitize(); 
     return fill; 
}); 

当我创建用于将图表数据的JSON字符串,我使用cyl3dFill [X]设置颜色:

{y: "10", tooltip: "10 Alarms", fill: cyl3dFill[3]} //Sets 3D Yellow fill 

如果填充不被添加到该数据记录,默认颜色被假定(红)。 不知道这是不是一个坏方法,但我喜欢它....

不知道下一个方法与三维主题,但它看起来像它改变了主题的颜色。不能得到的方法工作...

https://dojotoolkit.org/api/dojox/charting/themes/ThreeD

0

只需基于ThreeD创建一个新主题,并根据要使用的颜色更改颜色变量。 我建议你:

+0

感谢您的信息菲利普!我没有创建自己的主题文件,而是从ThreeD.js中获取代码,并将JSON字符串中每个图形栏所需的颜色应用。请参阅下面的文章... – GoinOff 2013-04-25 16:10:35

+1

克隆该文件允许您在其他地方重复使用该主题,而不是在每次要应用该特定主题时进行复制/粘贴... – Philippe 2013-04-25 18:31:57

+0

感谢您对sitepen的链接,超级有用。现在也要制作我自己的定制主题。回到实验室.... – GoinOff 2013-04-25 19:56:16