最近做的项目其中一个功能是画雷达图,鼠标滑过雷达图的拐点,展示该维相关数据,并且需要显示雷达图的刻度。

但是我发现单纯的雷达图似乎没办法展示一维数据。

我总结了一下,关于画雷达图,我遇到的难点有三个:

(1)如何显示刻度。

(2)如何判断滑过的是拐点。

(3)如何找出拐点对应的该维数据。

下面总结问题的解决办法:

问题(1):

echarts的版本从4.x以后不再提供雷达图的刻度标签属性了,但3.x版本是有刻度这个配置属性的,radar.axisLabel。所以要想显示雷达图的刻度,可以将echarts的版本换回3.x版本。但是对于我的项目来说,这个办法不太可行,因为我的项目中有很多的图表是基于4.x版本绘制的,如果改回3.x版本,要改动的东西就太多了,牵一发而动全身。

所以我必须想别的办法。我考虑用极坐标做雷达图的底图,将极坐标的刻度作为雷达图的刻度,关键步骤如下:

1、我的雷达图的显示数值的范围是1~10,显示的刻度间隔是2,因此我用极坐标的径向轴radiusAxis来显示刻度间隔是2的刻度。

2、另外,需要将雷达图的半径设置radar.radius和极坐标的半径设置polar.radius设为相同,以便他们有相同的放缩比例。

3、极坐标的径向轴的分隔个数radiusAxis.splitNumber和雷达图的指示器轴的分割个数radar.splitNumber必须相同。

4、极坐标的中心点polar.center和雷达图的中心点radar.center也必须相同。

var dimensionData = [
{name: "覆盖", max: 10},
{name: "干扰", max: 10},
{name: "感知", max: 10},
{name: "故障", max: 10},
{name: "容量", max: 10}
];
data = [7.9, 3, 3, 5.11, 4.4];
var radius = '60%';
var radarOption = {
radar:{
center:['50%', '50%'],
startAngle:90,
indicator:dimensionData,
splitNumber: 5,
radius: radius,
shape: 'circle',
name: {
show:true,
textStyle: {
color: '#ffffff',
fontSize: 12
}
},
splitArea: {
areaStyle: {
color: ['rgba(0, 21, 102, 0.4)'],
},
},
splitLine: {
show:true,
lineStyle: {
color: ['rgba(238,238,238, 0.2)']
}
},
axisLine: {
lineStyle: {
color: ['rgba(238,238,238, 0.2)']
}
}
},
//极坐标系
polar: {
radius: radius,
},
angleAxis: {
axisLine: {
lineStyle: {
color: 'rgba(238,238,238, 0.2)'
}
},
},
radiusAxis: {
//用注释掉的这个用法可以动态控制刻度的个数,但有时候会出现刻度标签显示不全的现象
// type: 'value',
// min: 0,
// max: 10,
// interval: 2
type: 'category',
axisLabel:{
show:true,
interval: 0,
fontSize:9,
color:"rgba(255, 255, 255, 0.5)",
},
axisTick:{
show:true,
inside:true,
},
axisLine:{
show:true,
lineStyle:{
color:'rgba(238,238,238, 0.2)'
}
},
splitLine:{
show:false,
lineStyle:{
color:'rgba(238,238,238, 0.2)'
}
},
data:["2", "4", "6", "8", "10"]
},
tooltip: {
show:false,
trigger:'item'
},
series:[
{
type: 'radar',
radarIndex:0,
data:[{
value:data
}],
symbol: 'circle',
symbolSize: 6,
itemStyle: {
normal: {
color: 'rgba(255, 255,255, 1)',
borderColor: 'rgba(255, 179, 0, 1)',
borderWidth: 1,
}
},
areaStyle: {
normal: {
color: 'rgba(255, 179, 0, 0.8)',
}
},
lineStyle: {
width: 2,
color: 'rgba(255, 179, 0, 1)'
}
}
]
}

问题(2):

点击雷达图的拐点,显示相关数据。我一开始想法是用tooltip来实现,但是我发现tooltip无法实现。原因有两个:一是tooltip的触发条件只能为trigger:'item',trigger:'axis'不能用。二是设置trigger:'item'之后,鼠标滑过雷达图的任何区域,tooltip都会展示所有维度的数据,没有办法实现滑过拐点,才展示数据和只展示该维数据。

所以我考虑用echarts提供API的鼠标事件来实现效果,我用的是mouseover事件和mouseout事件。我想要通过事件传递的参数来判断鼠标滑过的是不是拐点。我先去查看了echarts官方文档中提供的参数,没有什么明显的参数可以让我判断出是不是鼠标滑过的是不是拐点。

但是我的组长坚信,鼠标滑过不同的地方,一定传的参数是有某个地方不同的。因此在坚持不懈和仔细的查看事件参数后,终于找到了。params.event.target.__dimIdx这个参数,在滑过拐点时,显示的是该拐点的维度下标,滑过其他区域时,显示的是undefied。因此可以用这个参数来判断鼠标滑过的是不是拐点。

this.radarChart.on("mouseover", function(params){
var isSelectedDot = params.event.target.__dimIdx;
if(isSelectedDot == undefined) return; //做鼠标滑过拐点的操作
});

问题(3):

拐点找到了,如何找出拐点对应的该维数据?在echarts4.x中,事件所得到的数据,是所有维度的数据,而不是单独某个维度的数据,如下图:

但是此时我已经获取到拐点的维度下标了,因此根据下标就可以获取到该维度的数据了。

Echarts4.x雷达图如何展示一维数据?的更多相关文章

  1. JavaScript数据可视化编程学习(二)Flotr2,雷达图

    一.雷达图 使用雷达图显示多维数据. 如果你有多维的数据要展示,那么雷达图就是一种非常有效的可视化方法. 由于雷达图不常用,比较陌生,所以向用户解释的时候有一些难度.注意使用雷达图会增加用户认知负担. ...

  2. 手动撸个Android雷达图(蜘蛛网图)RadarView

    公司产品需要一个雷达图来展示各维度的比重,网上找了一波,学到不少,直接自己上手来撸一记 无图言虚空 简单分析一波,确定雷达图正几边形的--正五边形 int count=5,分为几个层数--4 层 in ...

  3. 利用matlibplot绘制雷达图

    之前在一些数据分析案例中看到用 Go 语言绘制的雷达图,非常的漂亮,就想着用matlibplot.pyplot也照着画一个,遗憾的是matlibplot.pyplot模块中没有直接绘制雷达图的函数,不 ...

  4. 比率(ratio)|帕雷托图|雷达图|轮廓图|条形图|茎叶图|直方图|线图|折线图|间隔数据|比例数据|标准分数|标准差系数|离散系数|平均差|异众比率|四分位差|切比雪夫|右偏分布|

    比率是什么? 比率(ratio) :不同类别数值的比值 在中文里,比率这个词被用来代表两个数量的比值,这包括了两个相似却在用法上有所区分的概念:一个是比的值:另一是变化率,是一个数量相对于另一数量的变 ...

  5. Qt数据可视化(散点图、折线图、柱状图、盒须图、饼状图、雷达图)开发实例

    ​  目录 散点图 折线图 柱状图 水平柱状图 水平堆叠图 水平百分比柱状图 盒须图 饼状图 雷达图 Qt散点图.折线图.柱状图.盒须图.饼状图.雷达图开发实例. 在开发过程中我们会使用多各种各样的图 ...

  6. 《BI那点儿事》SSRS图表和仪表——雷达图分析三国超一流谋士、统帅数据(图文并茂)

    雷达图分析三国超一流谋士.统帅数据,献给广大的三国爱好者们,希望喜欢三国的朋友一起讨论,加深对传奇三国时代的了解 建立数据环境: -- 抽取三国超一流谋士TOP 10数据 DECLARE @t1 TA ...

  7. Echarts数据可视化series-radar雷达图,开发全解+完美注释

    全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...

  8. 数据可视化基础专题(十二):Matplotlib 基础(四)常用图表(二)气泡图、堆叠图、雷达图、饼图、

    1 气泡图 气泡图和上面的散点图非常类似,只是点的大小不一样,而且是通过参数 s 来进行控制的,多的不说,还是看个示例: 例子一: import matplotlib.pyplot as plt im ...

  9. 帆软报表(finereport)雷达图钻取详细点新页面展示

    添加参数栏,季度下拉框的空间名为combobox0 添加雷达图,通过第三页面做跳转 雷达图钻取.cpt为联动钻取的第三页面 添加纬度(所点击钻取的点) 参数   wd 添加季度参数 jd    值为季 ...

随机推荐

  1. p5.js

    p5.js p5.j​​s是一个用于创意编码的JavaScript库,其重点是使艺术家,设计师,教育者,初学者以及其他任何人都可以访问并包含所有编码! https://p5js.org/ https: ...

  2. tree ignore & bash & cmd

    tree ignore & bash & cmd tree ignore https://unix.stackexchange.com/a/47806 https://zaiste.n ...

  3. navigator.geolocation.getCurrentPosition

    navigator.geolocation.getCurrentPosition Geolocation API Specification 2nd Edition W3C Recommendatio ...

  4. Azure 信用卡扣款 1 美元 & Azure 中国客服

    Azure 信用卡扣款 1 美元 & azure 中国客服 Azure 免费帐户常见问题 https://azure.microsoft.com/zh-cn/free/free-account ...

  5. GitHub & GitHub Package Registry

    GitHub & GitHub Package Registry npm https://github.blog/2019-05-10-introducing-github-package-r ...

  6. 「NGK每日快讯」12.2日NGK公链第29期官方快讯!

  7. 利用Metasploit 打入ThinkPHP内网...

    出品|MS08067实验室(www.ms08067.com) 本文作者:dch(Ms08067实验室 SRSP TEAM小组成员) 一.利用Metasploit进行攻击的流程图   Metasploi ...

  8. 将VMware工作站最小化到托盘栏

    目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayconizerw.zip 3.创建 VMware 快捷方式 4.修改 VMware 快捷方式 5.运 ...

  9. Docker备份迁移

    目录 Docker备份迁移 1.容器保存为镜像 2.镜像打包成压缩文件 3.把压缩文件恢复成镜像 Docker备份迁移 1.容器保存为镜像 将已经装好各种软件的容器再次打包为镜像,这样下次直接装这个镜 ...

  10. OLAP分析

    OLAP分析 1 视频教程 视频教程 如果对资源下载.分析操作有疑问,直接跟着视频做一遍即可. 2 数据集合说明 FoodMart,其为一家食品连锁店经营产生的数据存放的数据库,包括销售数据.库存数据 ...