echarts 关系图
发布网友
发布时间:2022-04-23 01:35
我来回答
共3个回答
懂视网
时间:2022-04-22 18:36
本篇文章给大家带来的内容是关于echarts环形图点击旋转并高亮的实现方法(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
通过计算某个扇形区域的值占整个圆的百分比来得到这个扇形的角度,从而根据startAngle这个属性来设定图形的开始渲染的角度,使点击某个扇形时圆环旋转使之始终对准某个点。
期间考虑到某扇形区域太小点击不到,来设置最小扇形区域。
const myChartContainer = document.getElementById( 'chart' );
const myChart = echarts.init( myChartContainer );
let minAngle = 30;// 最小扇形区域为30
for ( let i = 0; i < obj.data.length; i++ ) { //某项数据为0时,最小扇形区域为0
if ( obj.data[ i ].value === 0 ) {
minAngle = 0;
break;
}
}
const pieValue = obj.data.map( v => {
return v.value;
} )
const sum = pieValue.reduce( ( prev, cur ) => {//数据值的总和
return prev + cur;
}, 0 );
const sum2 = pieValue.reduce( ( prev, cur ) => {
if ( cur < sum / 12 && cur > 0 ) {//某个值大于0小于总和的1/12即30时,按30计算和
return prev + sum / 12;
}
return prev + cur;
}, 0 );
let initPieValue = pieValue[ 0 ];// 初始值
if ( initPieValue < sum / 12 && initPieValue > 0 ) {
initPieValue = sum / 12;
}
const option = {
tooltip: {
show: false,
trigger: 'item',
formatter: '{a} <br/>{b}: {c} ({d}%)'
},
legend: {
show: false,
orient: 'vertical',
x: 'left'
},
color: [ '#44bbf8', '#93e588', '#ffd87b', '#f88071' ],
series: [
{
name: '',
type: 'pie',
radius: [ '45%', '79%' ],
clockWise: false,
startAngle: 167 - ( initPieValue / sum2 * 360 / 2 ),
minAngle: minAngle,
avoidLabelOverlap: false,
itemStyle: {
emphasis: {
radius: [ '46%', '100%' ]
}
},
label: {
normal: {
show: false,
position: 'center'
},
emphasis: {
show: false,
textStyle: {
fontSize: '30',
fontWeight: 'bold'
}
}
},
labelLine: {
normal: {
show: false
}
},
data: obj.data
}
]
};
myChart.setOption( option );
if ( minAngle === 30 ) { //最小扇形区域30时
myChart.dispatchAction( { type: 'highlight', seriesIndex: 0, dataIndex: 0 } );
}
let preDataIndex = 0;
myChart.on( 'click', ( v ) => {
if ( v.dataIndex === preDataIndex ) {
myChart.dispatchAction( {
type: 'highlight',
seriesIndex: 0,
dataIndex: v.dataIndex
} );
return;
}
const sum1 = pieValue.reduce( ( prev, cur, index ) => {
if ( index < v.dataIndex ) {
if ( cur < sum / 12 && cur > 0 ) {
return prev + sum / 12; // 饼图的扇形最小角度设置为30,占圆的1/12
}
return prev + cur;
}
return prev;
}, 0 );
let curPieValue = pieValue[ v.dataIndex ];
if ( curPieValue < sum / 12 && curPieValue > 0 ) {
curPieValue = sum / 12;
}
option.series[ 0 ].startAngle = 167 - ( sum1 / sum2 * 360 + curPieValue / sum2 * 360 / 2 );// 开始渲染图形的角度
myChart.setOption( option );
preDataIndex = v.dataIndex;
window.setTimeout( () => {
myChart.dispatchAction( {
type: 'highlight',
seriesIndex: 0,
dataIndex: v.dataIndex
} );
}, 400 );
this.mrkName = v.data.name;
this.mrkValue = v.data.value;
} );
热心网友
时间:2022-04-22 15:44
使用_buildLinkShapes(nodes, links)函数,针对定义的全部线段数据,设置线段的权重(粗细)、样式和高亮样式。
1、zrender定义线段数据:
{source : 1, target : 0, weight : 1,
onclick:function(params){
alert(params.target.style.text);
},
itemStyle:{
normal:{
lineWidth:10,
text:'丽萨-乔布斯',
textColor:'#030303',
textFont:'bold 15px verdana',
textPosition:'inside'
}
}}
onclick是点击事件。onclick:function(params){alert(params.target.shape);
lineWidth是线段宽度。
text是标注的文字。
textPosition 采用的zrender中的文字位置。
定义线段事件和样式全部代码:
function _buildLinkShapes(nodes, links) {
var l = links.length;
for (var i = 0; i < l; i++) {
var link = links[i];
//var source = nodes[link.source];
// var target = nodes[link.target];
var weight = link.weight || 1;
linkWeights.push(weight);
var shape = {
id : zr.newShapeId(self.type),
shape : 'line',
hoverable : false,
style : {
xStart : 0,
yStart : 0,
xEnd : 0,
yEnd : 0
},
clickable : true,
highlightStyle : {}
};
zrUtil.merge(shape.style, linkStyle);
zrUtil.merge(shape.highlightStyle, linkEmphasisStyle);
//优先级 ItemStyle > linkStyle
if (typeof(link.itemStyle) !== 'undefined') {
if(link.itemStyle.normal){
zrUtil.merge(shape.style, link.itemStyle.normal, {
overwrite : true
});
}
if(link.itemStyle.emphasis){
zrUtil.merge(
shape.highlightStyle,
link.itemStyle.emphasis,
{ overwrite : true }
);
}
}
//zhao
if (typeof (link.onclick) !== 'undefined') {
if (link.onclick) {
shape.onclick = link.onclick;
}
}
linkShapes.push(shape);
self.shapeList.push(shape);
zr.addShape(shape);
}
var narr = new NDArray(linkWeights);
var max = narr.max();
if (max !== 0) {
linkWeights = narr.mul(1/max, narr).toArray();
}
}
热心网友
时间:2022-04-22 17:19
{
source : "及时雨\n宋江",
target : "铁扇子\n宋清",
value : "兄弟",
symbol : [ 'arrow', 'arrow' ]
},
在links中添加 symbol属性就可以了
用Pyecharts绘制网络关系图
对照pyecharts文档照猫画虎,绘制了一个文本引用关系的关系图。按照说明文档,关系图需要的数据包括:GraphNode(节点数据项)、GraphLink(节点间的关系数据)和GraphCategory(节点分类类目),如下图。我自己绘制的关系图如下。试了下 'symbol' 参数指定节点图形;以及将节点连线指定为由 'source' 指向...
ECharts绘图解决方案——流动关系图(桑基图)
用流动关系图来映射品牌之间的有效换机数量,从而帮助运营对手机品牌的行情做分析和预测。最终实现效果如下图所示:以上生成的配置项均可直接粘贴在 https://echarts.apache.org/examples/zh/editor.html?c=line-simple 查看效果。
echarts流程图如何生成坐标
这是要自定义生成的。使用键值对的形式进行存取。为了建立流程图,需要使用echarts的关系图组件,即type类型为‘graph’。首先创建一个div,为echarts准备一个具备大小的Dom,然后指定图表的配置项和数据。其中,symbol参数可以修改元素的样式,‘roundRect’为圆角矩形,还有’circle’, ‘rect’, ‘triang...
Echarts 力导向图的连线,怎么配置不同长度
我做的关系图中,data/nodes属性里面有一个x,y坐标。把xy坐标填上就可以根据x,y坐标调整线的长度。{ 'id': 14, 'category': 3, 'name': '14', 'symbolSize': 8, x: -220, y: 400 ,itemStyle: {color: '#ffffff'}, label: {show: true, position: 'left', color: '#00000...
echart树形图实现点击节点完整链路更换颜色
在某些需求下需要用到树形图来表达数据结构,我使用的是 echarts ,关于 echart 树形图的基础配置和使用这里就不展开。直接上图,这是一个基础的树形图demo:当点击非最末节点的时候,echart的默认行为为收缩该节点的子节点,这个行为会与下面实现的效果有关系,效果:下面进入实现,一开始思考这个需求的...
为什么echarts关系图在火狐失效
多数情况是兼容原因,建议在火狐浏览器上安装Firebug,使用这个工具调试一下,多数错误插件会有明确提示。
echart大神前来帮忙,用echart做一个关系图,页面总是有错,
echart大神前来帮忙,用echart做一个关系图,页面总是有错, 20 用java做一个关系图,浏览器总是报如图所示的问题,下面这个链接是echart官网的实例原型,http://echarts.baidu.com/echarts2/doc/example/webkit-dep.html希望大神可以把写好的页面发... 用java做一个关系图,浏览器总是报如图所示的问题,下面这个...
echarts官网直接提供的模板有哪些
6. 雷达图(Radar Chart):这个图表类型用于展示多个变量之间的关系。ECharts提供了多种雷达图样式,包括普通雷达图、分组雷达图等。除了以上常见的图表类型,ECharts还提供了其他一些图表模板,如K线图、漏斗图、热力图等。这些模板可以帮助用户更好地展示数据,并提高数据可视化的效果。在使用这些模板时,...
如何使用python的pyecharts的timeline时间轴组件构建带有
Timeline:时间线轮播多图通过轮播模式展示多个时间点的数据图,用户可根据时间轴滚动查看不同时间的数据情况,适合展示动态数据流。基本设置初始化Pyecharts环境,定义数据源与时间轴参数,设置图表样式与交互控制。时间轴 checkpoint 样式配置调整时间点的样式,如颜色、大小等,以突出重要时间点或数据变化。时...
echarts漏斗图
漏斗图:漏斗图是用于单流程的数据分析,在数据间有逻辑关系且依次减少时适用。介绍一种简单的制作漏斗图的方法:1、 进入BDP个人版界面后,点击上传数据,将记录活动数据的Excel表格上传至BDP内,再回到工作表内,选择你刚刚上传的数据,点击右上角的新建图表,就可以开始制作仪表盘啦!2、上传所需要...