superset二次開發-修改圖表顏色

方式一、添加color scheme

需要修改的文件:superset/assets/javascripts/modules/colors.js

代碼:

export const newColorScheme = [

"#a4f2b8",

"#abc8fa",

"#c8b4f8",

"#e6eb9e"

];

export const ALL_COLOR_SCHEMES = {

bnbColors,

d3Category10,

...

newColorScheme

};

但是,有的圖表通過color scheme修改了,但是沒有修改,比如sunburst;

方式二、修改圖表的js文件顯示邏輯(拿sumburst舉例了)

需要修改的文件:superset/assets/visualizations/sunburst.js

修改的代碼(第352行):

if (fd.metric !== fd.secondary_metric) {

// colorByCategory = false;

ext = d3.extent(nodes, d => d.m2 / d.m1);

colorScale = d3.scale.linear()

.domain([ext[0], ext[0] + ((ext[1] - ext[0]) / 2), ext[1]])

.range([#00D1C1, white, #FFB400]);

}

解釋:主要就注釋了一句代碼

// colorByCategory = false;

從這個文件來看,這段代碼的意義就是確定顏色的獲取方式是否來自category,那麼我既然希望代碼獲取來自category,那麼,就不修改初始值,因為初始值就是true;

效果:

用了以上兩種方式,基本上都能修改了,但是還有一種,是官方在配置slice的時候,根本就沒有color scheme可選的,比如table view,真的是很讓人吐槽的顏色,這個時候怎麼改呢?

方式三、直接修改js代碼(拿table view舉例)

文件:superset/assets/visualizations/table.js

代碼:

1、在table.append(tbody)這句代碼之前添加代碼:

const colors = ["#2355ac","#007fa8","#26A4D6","#5fc3ea","#4a94ce","#699fff","#abc8fa"];

var count = 0;

table.append(tbody)

2、原.style(background-image, function (d) {});方法修改為:

.style(background-image, function (d) {

if (d.isMetric) {

count += 1;

const perc = Math.round((d.val / maxes[d.col]) * 100);

d.color = colors[count];

return (`linear-gradient(to left, ${d.color} ${perc}%, ` +

`rgba(0,0,0,0.01) ${perc}%`);

}

return null;

})

修改後的效果為:


推薦閱讀:

DataHunter創始人程凱征:數據可視化的趨勢和應用
我乎《竇唯目前在幹什麼》引發的熱浪後分析
Excel 製作第一財經的漂亮拋物線比較圖表
iOS或Android開發中有哪些庫或工具可以幫助實現數據可視化?
R語言數據清洗實戰——世界瀕危遺產地數據爬取案例

TAG:二次开发 | 数据可视化 |