[Power BI 可视化问题系列] - 业务问我到底能不能做颜色渐变图?

132 阅读3分钟

又是美好的一天, 熟悉power bi 或者在日常工作有应用过该工具的小伙伴应该都遇到过以下场景,业务用户不知道从哪里搞来一张图对你说想要一样的效果, 你看了眼图片长这个样子.

image.png

这是一个在其他BI工具里很常见的渐变色柱形图, 但是要在power bi 中实现同样效果是很困难的,因为power bi 的颜色设置不支持单一渐变处理.

你看着业务说工具好像不支持做这样的效果,要不我给你个其他的展示形式吧? 比如说我只能实现以下效果

image.png 业务白了你一样说你这什么东西啊! 我不管我只要我这个样子的图,你自己想办法解决.

就这样你在心里疯狂问候业务可还是要想办法实现, 你想起老师傅曾说过如果工具现有的没办法满足你得需求,那么你就要想能不能用工具去创造自己想要的东西. 如果power bi目前的可视化功能不支持,那么可以选择自定义可视化插件啊!

说干就干.

image.png

image.png

这是一个提供其他开发者自制的可视化插件社区, 你可以通过这些插件去定制原工具不支持的图表效果, 由于插件众多你也不知道具体哪个可以实现同样效果,所以你索性想通过代码自己实现.

求人不如求自己, 不会前端代码的BI开发不是好的分析师 !

已知可以自行编写代码的可视化插件有以下几个, 分别是支持HTML的, 支持D3.js的, 支持echarts的 和 支持vega的插件

image.png

image.png

image.png

image.png

你想起自己还了解些Vega语法,再经过一些百度大法,你终于实现了业务口中想要的一模一样的效果

image.png

image.png

image.png

为了让大家夸你,你决定把实现代码也贴出来

{ "$schema": "vega.github.io/schema/vega…", "background": "#100c2a", "description": "A basic bar chart example.", "width": 200, "height": 100, "padding": 5,

"data": [ { "name": "table", "values": [ {"category": "A", "amount": 28}, {"category": "B", "amount": 55}, {"category": "C", "amount": 43}, {"category": "D", "amount": 91}, {"category": "E", "amount": 81}, {"category": "F", "amount": 53}, {"category": "G", "amount": 19}, {"category": "H", "amount": 87} ] } ],

"signals": [ { "name": "tooltip", "value": {}, "on": [ {"events": "rect:mouseover", "update": "datum"}, {"events": "rect:mouseout", "update": "{}"} ] } ],

"scales": [ { "name": "xscale", "type": "band", "domain": {"data": "table", "field": "category"}, "range": "width", "padding": 0.05, "round": true }, { "name": "yscale", "domain": {"data": "table", "field": "amount"}, "nice": true, "range": "height" } ],

"axes": [ {"orient": "bottom", "labelColor": "grey", "scale": "xscale"}, {"orient": "left", "labelColor": "grey", "grid": true, "gridColor": "lightgrey", "gridOpacity": 0.2, "scale": "yscale"} ],

"marks": [ { "type": "rect", "from": {"data": "table"}, "encode": { "enter": { "x": {"scale": "xscale", "field": "category", "offset": {"scale": "xscale", "band": 0.25} }, "width": {"scale": "xscale", "band": 0.5}, "y": {"scale": "yscale", "field": "amount"}, "y2": {"scale": "yscale", "value": 0} }, "update": { "fill": {"value":{ "gradient": "linear", "stops": [ {"offset": 0, "color": "rgb(125,189,246)"}, {"offset": 1, "color": "rgb(24,141,240)"} ], "x1": 0, "y1": 0, "x2": 0, "y2": 1 }

      }
    },
      "hover": {
      "fill": {"value": "rgb(35,120,247)"}
    }
  }
},
{
  "type": "text",
  "encode": {
    "enter": {
      "align": {"value": "center"},
      "baseline": {"value": "bottom"},
      "fill": {"value": "grey"}
    },
    "update": {
      "x": {"scale": "xscale", "signal": "tooltip.category", "band": 0.5},
      "y": {"scale": "yscale", "signal": "tooltip.amount", "offset": -2},
      "text": {"signal": "tooltip.amount"},
      "fillOpacity": [
        {"test": "datum === tooltip", "value": 0},
        {"value": 1}
        
      ]
    }
  }
}

] }

关注队长, 学习更多power bi 小知识~