我正在使用来自 dojo 图表的 ThreeD 主题显示图表。当我修改数据以便为图表中的某些条形显示不同的颜色时,我失去了 3D 外观。
ThreeD 的默认颜色是红色
{y:"15",tooltip: "15 警报",fill: 'yellow'}
在数据项上添加“填充:黄色”会将条形更改为黄色,但我失去了 3D 外观。
关于更改主题颜色和保持 3D 外观的最佳方法的任何想法?
我正在使用来自 dojo 图表的 ThreeD 主题显示图表。当我修改数据以便为图表中的某些条形显示不同的颜色时,我失去了 3D 外观。
ThreeD 的默认颜色是红色
{y:"15",tooltip: "15 警报",fill: 'yellow'}
在数据项上添加“填充:黄色”会将条形更改为黄色,但我失去了 3D 外观。
关于更改主题颜色和保持 3D 外观的最佳方法的任何想法?
我可以通过从 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
如果未向数据记录添加填充,则采用默认颜色(红色)。不确定这是否是一个坏方法,但我喜欢它....
不确定下一个方法对 ThreeD 主题做了什么,但看起来它改变了主题的颜色。无法使用该方法...
只需基于 ThreeD 创建一个新主题,然后将颜色变量更改为您要使用的颜色。我建议你 :