PowerBI中使用SVG图标简单介绍
PowerBI中使用SVG图标简单介绍
1. 什么是SVG?
SVG 意为可缩放矢量图形(Scalable Vector Graphics)。
SVG 是使用 XML 来描述二维图形和绘图程序的语言。
SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失。
SVG 是万维网联盟(W3C)的标准。
2. SVG的优势
与其他图像格式相比(比如 JPEG 和 GIF),使用 SVG 的优势在于:
SVG 图像可通过文本编辑器来创建和修改;
SVG 图像可被搜索、索引、脚本化或压缩;
SVG 是可伸缩的;
SVG图像可在任何的分辨率下被高质量地打印;
SVG 可在图像质量不下降的情况下被放大;
由于以上的特性,我们在Power BI中使用SVG图标就很有优势!
3. 什么时候使用?
正常情况下,我们在PBI中插入图片是采用 “直接插入图像” 的方式。
但是这种方式存在部分的局限性,即:当一些小的图标需要在表格中进行显示时,“直接插入图像” 的方式会显得很笨拙。
这时候,我们就可以考虑采用 “SVG图标” 的方式。
4. 一个简单的SVG示例
SVG 文件推荐使用 .svg(全部小写)作为此类文件的扩展名。
test.svg 文件:
<svg version="1.1"baseProfile="full"width="300" height="200"xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" stroke="red" stroke-width="4" fill="yellow" /><circle cx="150" cy="100" r="80" fill="green" /><text x="150" y="115" font-size="16" text-anchor="middle" fill="white">RUNOOB SVG TEST</text>
</svg>
得到以下的图形:
可以在 SVG运行测试 中进行验证。
SVG 代码解析:
SVG 代码和html代码类似,都是由标签组成的,标签可以嵌套。
SVG 代码以 <svg> 元素开始,包括开启标签 <svg> 和关闭标签 </svg> 。这是根元素。
width 和 height 属性可设置此 SVG 文档的宽度和高度;
version 属性可定义所使用的 SVG 版本;
xmlns 属性可定义 SVG 命名空间。
SVG 的 <rect> 用来创建一个矩形,通过 fill 把背景颜色设为黄色。
SVG 的 <circle> 用来创建一个圆。
cx 和 cy 属性定义圆中心的 x 和 y 坐标。如果忽略这两个属性,那么圆点会被设置为 (0, 0),r 属性定义圆的半径。 一个半径80px 的绿色圆圈 <circle> 绘制在红色矩形的正中央 (向右偏移 150px,向下偏移115px)。
stroke 和 stroke-width 属性控制如何显示形状的轮廓。我们把圆的轮廓设置为 4px 宽,红色边框。
fill 属性设置形状内的颜色。我们把填充颜色设置为红色。
关闭标签 </svg> 的作用是关闭 SVG 元素和文档本身。
注释:所有的开启标签必须有关闭标签!
参考:菜鸟教程:SVG 实例
5. 在PBI中自定义SVG
在Power BI中使用SVG,都是用度量值来存放的。
自定义SVG:即没有现成的SVG图片,根据需要,自定义一些图表(可以简单地理解成“一笔一划”的画,过程较复杂,但功能更灵活)。
新建度量值,输入:
circle_icon = "data:image/svg+xml;utf8,
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'>
<circle cx='30' cy='30' r='30' fill='green'/> //画圆圈
</svg>"
字段说明:
- data:image/svg+xml;utf8
含义:说明数据类型和编码格式(必须)。 - xmlns=‘http://www.w3.org/2000/svg’
含义:xmlns用于说明这段代码所遵从的标准(必须)。 - viewBox=‘0 0 100 100’
含义:说明可视窗口的大小(一般当成默认值即可,深究较复杂)。
感兴趣的可以参考:svg中viewbox图解分析 - <circle cx=‘30’ cy=‘30’ r=‘30’ fill=‘green’/>
含义:使用<circle…/> 标签可用来创建一个圆(根据需要,使用不同的标签);cx、cy 属性定义圆心的x、y坐标;r 属性定义圆的半径;fill 属性设置形状的填充颜色。
然后将 [circle_icon] 度量值用表或矩阵来呈现,就可以得到以下的结果。
6. 在PBI中插入SVG图片
在一般的工作中,我们往往不是自己去设计SVG图片样式,而是直接插入别人设计好的SVG图片。所以,我们需要知道如何插入SVG图片到Power BI中。
1. 查看SVG图片的源代码
- 在浏览器中打开SVG图片;
- 鼠标右键单击 “查看源代码” ,就可以看到SVG图片的源代码。
2. PBI中插入SVG图片
- 复制源代码中<svg…>… </svg>标签中的所有内容;
- 将<svg…>… </svg> 标签内容中所有的双引号替换成单引号;
- 在PBI中新建度量值,粘贴上一步的<svg…>…</svg>标签内容,然后在前面加上 data:image/svg+xml;utf8 ,并用双引号引起来。(参照自定义SVG中的格式)
- 将度量值的数据类型改成“图像 URL”(很重要,否则无法显示);
- 用表或矩阵来呈现度量值中存放的SVG图片。
7. 简单案例
sales表记录了不同日期和城市的销售数据。
数据的基本格式如下:
需求如下:
根据每个城市的销售总额,将排名前3的城市前面分别显示金、银、铜牌,排名后面的城市显示普通奖牌。
效果图如下:
具体步骤如下:
1.将金、银、铜牌和普通奖牌图标的SVG代码粘贴到到度量值中保存。
分别为:[icon_gold_medal]、[icon_silver_gold]、[icon_bronze_medal]和[icon_general_medal];
这里只列出 [icon_gold_medal] 的具体写法:
icon_gold_medal = "data:image/svg+xml;utf8,
<svg t='1657694803903' class='icon' viewBox='0 0 1024 1024'
version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='8707'
xmlns:xlink='http://www.w3.org/1999/xlink'
width='200' height='200'><defs>
<style type='text/css'>@font-face
{ font-family: feedback-iconfont;}
</style></defs>
<path d='M337.175 0H162.375l249.8 449.6h174.8L337.175 0z'
fill='#E64A19' p-id='8708'></path>
<path d='M686.875 0L437.075 449.6H611.875L861.675 0H686.875z'
fill='#FF754C' p-id='8709'></path>
<path d='M586.975 449.6l-1.7-3.3-1.7 3.3h3.4zM482.775 260.7l-86 160.4 27.9 54.4 87-160.6-28.9-54.2z'
fill='#C93D18' p-id='8710'></path>
<path d='M511.975 724.3m-299.7 0a299.7 299.7 0 1 0 599.4 0 299.7 299.7 0 1 0-599.4 0Z'
fill='#FFBA57' p-id='8711'></path>
<path d='M511.975 974c-137.9 0-249.8-111.8-249.8-249.8s111.8-249.8 249.8-249.8 249.8 111.8 249.8 249.8c-0.2 138-111.9 249.7-249.8 249.8z m-74.9-174.8v50h149.9v-50h-50V649.4h50v-50H437.075v50h50v149.9h-50z'
fill='#FFE082' p-id='8712'></path>
</svg>"
注:开头记得加:data:image/svg+xml;utf8
2.新建度量值sales_sum,计算总销量 (具备“行上下文”功能。如果直接在后面的度量值icon_presentation里面定义成变量,则不具备“行上下文”功能,rankx()函数无法实现排名);
sales_sum = sumx('sales','sales'[sales])
3.新建逻辑控制度量值,根据不同排名,展示不同的图标;
icon_presentation =
// 根据城市的销量进行排名
var sales_rank = rankx(all('sales'[city]),[sales_sum])
return
if(HASONEVALUE(sales[city]), // 让总计处不显示图标
switch(sales_rank,
1,[icon_gold_medal],
2,[icon_silver_gold],
3,[icon_bronze_medal],
[icon_general_medal]))
3.将度量值icon_presentation的数据类型改成“图像 URL”;
4.在表格中分别放入度量值icon_presentation、city和sales,对sales进行降序排列,就可以得到上面的效果图。
PowerBI中使用SVG图标简单介绍相关推荐
- 使用 iconfont 中的 svg 图标
最近在使用 Element-UI开发的时候发现其图标并不是够用,于是想着如何将 https://www.iconfont.cn/home/index 上面的图标导入进自己的项目中去. 网上的搜索结果基 ...
- php有lambda表达式吗,Python中lambda表达式的简单介绍(附示例)
本篇文章给大家带来的内容是关于Python中lambda表达式的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一:匿名函数的定义 lambda parameter ...
- mpvue微信小程序中使用svg图标,并通过代码动态改变图标颜色
微信小程序,mpvue中使用svg图标,并通过代码改变图标颜色 本文主要是mpvue开发小程序的代码,不过微信小程序原生开发应该也是一样的,思路都是通用的,按照这个思路微信小程序原生开发一样可以实现同 ...
- 浏览器中 F12 功能的简单介绍
chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首 ...
- Vue中使用SVG图标的步骤【钢镚核恒】
Vue中使用SVG图标的步骤 简介 svg 可缩放矢量图形(Scalable Vector Graphics) svg 优势:任意缩放,超强显示效果,较小文件,可压缩 svgo 用来压缩svg中无用信 ...
- python shelve模块_Python中shelve模块的简单介绍(附示例)
本篇文章给大家带来的内容是关于Python中shelve模块的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. shelve:对象持久化的保存的模块,将对象保存到文件 ...
- react前端显示图片_在 React 中使用 SVG 图标组件
SVG 很酷,它们能放大放小. 那么 SVG 的优点是什么? SVG 或可缩放矢量图形是基于 XML 的格式图像格式,可以在保持图像质量的同时缩放到任何大小.因此,当你需要根据需要调整大小的图像时,S ...
- Android中PackageManager类的简单介绍
1.PackageManager这个类,表层意思是包管理者,既然可以管理包,那么包下的一些东西便可以获取,其中可以获取应用图标和应用名称以及包名. 通过下面一行代码实例化PackageManager类 ...
- 如何在VUE项目中使用svg图标
一文带你搞定svg图标的使用! 文章目录 前言 一.SVG相较于字体图标的优点 二.使用步骤 1.新建一个vue2项目 2.安装项目依赖 3 .在src目录下新建文件夹 4.创建svg-icon组件 ...
最新文章
- JavaScript在离开页面是提示用户
- 关于python中requests模块导入问题-Python中requests模块的核心使用(1)
- 左神算法:两个单链表相交的一系列问题(链表是否有环 / 两无环链表是否相交 / 两有环链表是否相交)
- SQL:REGEXP
- 电源纹波分析及测试方法
- [CTSC2017]吉夫特(思维+巧妙)
- java 压缩文件夹_java 实现压缩文件(单文件 或 文件夹)
- 【树莓派】【网摘】树莓派与XBMC及Kodi、LibreELEC插件(三)
- jq判断html加载完成,jquery – 检测页面是否已完成加载
- join为什么每个字符都分割了 js_为什么 webpack4 默认支持 ES6 语法的压缩?
- 利用高阶函数map和reduce将字符串转化成浮点数
- torch.ones,normal,max
- python版本安装
- 常见的HTTP状态码说明
- 30个精品Python练手项目
- 蓝桥杯python试题集VIP版
- linux ssh pem 登陆,Linux 生成pem文件 用于免密登录
- R语言将字符串中的数字提取出来作为值
- Conflict with dependency com.android.support-annotations' in project':app'.Resolved ...解决方法
- Linux基础——makefile编写
热门文章
- PNG怎么转换成PDF?这篇文章教会你
- 转载 :make报错:/usr/bin/ld: cannot find -lXXX
- could not create folder “sftp://xxx.xxx.xxx.xxx/.../venv“. (Permission denied)
- Linux账户设置能su不能ssh,ssh无法登录可以su切换的问题
- MongoDB 数据文件损坏修复救命repair与致命危险
- Django笔记 CMS框架Mezzanine 2
- 2020年国考申论备考:评价类(观点)题和理解类题目的辨析
- 自媒体这样运营想不成功都难!
- 2020年10月份电脑选购计划
- mapbox 聚合图