echarts树图图标修改成图片以及自定义图片首次加载不显示的问题的修改<js>

首先看一下显示效果,如下图所示:

显示效果

1.首先修改图片,在option对象中加入 下方代码就可实现图片的修改,但是存在bug

symbol:'image://https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3857605647,1610745729&fm=26&gp=0.jpg',//修改图片
symbolSize:  [30, 30],//修改图片大小

2.图片修改后,只有点击节点的时候才会显示图片,刚加载进去不显示图片,加上下面代码即可显示

/**
* 解决echarts图片首次加载不显示的问题
*/
setTimeout(function(){
    $(myChart).resize();     
},200)

3.通过上述修改后,还是有bug,那就是点击父节点展开和合并子节点的时候,图片又会消失,所以又有了下方代码

/**
* 解决点击父节点合并或展开后子节点图片不显示的问题
*/
$(window).on('click',function(){
    $(myChart).resize();
})

4.完整代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
    <script type="text/javascript" src="js/echars.js"></script>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 1000px;height:500px;"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));
		var data = {
		  "name": "外部网络",
		  "children": [
		    {
		      "name": "交换机",
		      "children": [
		        {
		          "name": "笔记本",
		          "value": "1",
		        },
		        {
		          "name": "计算机",
		          "value": "2",
		          "children": [
			        {
			          "name": "计算机1",
			          "value": "1",
			        },
			        {
			          "name": "计算机2",
			          "value": "2",
			        },
			        {
			          "name": "计算机3",
			          "value": "3",
			        },
			        {
			          "name": "计算机4",
			          "value": "4",
			        }
			      ]
		        },
		        {
		          "name": "路由器",
		          "value": "3",
		        },
		        {
		          "name": "服务器",
		          "value": "4",
		        },
		        {
		          "name": "打印机",
		          "value": "5",
		        },
		        {
		          "name": "计算机",
		          "value": "6",
		        }
		      ]
		    },
		    {
		      "name": "无线交换机",
		      "children": [
		        {
		          "name": "手机",
		          "value": "1",
		        },
		        {
		          "name": "平板",
		          "value": "2",
		        }
		      ]
		    },
		    {
		      "name": "hub",
		      "children": [
		        {
		          "name": "计算机",
		          "value": "1",
		        },
		        {
		          "name": "笔记本",
		          "value": "2",
		        },
		        {
		          "name": "打印机",
		          "value": "3",
		        },
		        {
		          "name": "路由器",
		          "value": "4",
//		          图片也可以放到数据里
//		          "symbol": 'image://https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3857605647,1610745729&fm=26&gp=0.jpg',
//	          	  "symbolSize": [40, 40],
		        }
		      ]
		    }
		  ]
		};
//		页面初始化的时候,隐藏奇数位的子节点
//		echarts.util.each(data.children, function (datum, index) {
//	        index % 2 === 0 && (datum.collapsed = true);
//	    });

		var option = {
			tooltip: {
	            trigger: 'item',
	            triggerOn: 'mousemove'
	       },
	        series: [
	            {
	                type: 'tree',
	                data: [data],
	                top: '1%',
	                left: '7%',
	                bottom: '1%',
	                right: '20%',
	                label: {
	                    position: 'left',
	                    verticalAlign: 'middle',
	                    align: 'right',
	                    fontSize: 9
	                },
					symbol:'image://https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3857605647,1610745729&fm=26&gp=0.jpg',//修改图片
	                symbolSize:  [30, 30],//修改图片大小
	                leaves: {
	                    label: {
	                        position: 'right',
	                        verticalAlign: 'middle',
	                        align: 'left'
	                    }
	                },
	                edgeForkPosition: "72%",
	                roam:true,//鼠标缩放,拖拽
	                expandAndCollapse: true,//无关的子树折叠收起
	                animationDuration: 550,
	                animationDurationUpdate: 750,
	                width: "50%"//组件宽度
	            }
	        ]
		}

		/**
		 * 解决echarts图片首次加载不显示的问题
		 */
		setTimeout(function(){
		     $(myChart).resize();     
		},200)
		/**
		 * 解决点击父节点合并或展开后子节点图片不显示的问题
		 */
		$(window).on('click',function(){
			$(myChart).resize();
		})
	    myChart.setOption(option);
    </script>
</body>
</html>

如果想用vue实现,可参考另一篇文章:参考地址

这篇文章是最开始研究树图的时候写的,可能内容没有那么完善,由于有网友问到可以每个节点设置不同的图片嘛,所以后面在加以补充

1.可以在每个节点数据中添加图片,如下图所示:

"symbol": 'image://image/switch.png',

 当然,这种方法在实际项目中肯定是不合理的,所以主要用到的还是如下第二点方法

2.遍历树节点,根据某种状态,给节点更改不同状态下的图片

/**
 * 遍历树
* */
readNodes(nodes) {
   for (const item of nodes) { // js遍历树形数组结构
      console.log('devId5555555555555555', item.id)
      if (item.children && item.children.length) {
         this.readNodes(item.children)
      }
      if (item.status == 1) { // 根据状态的不同,修改图片
          item.symbol = 'image://' + require('@/assets/serverTopo/server_online_reg.png');
        } else {
          item.symbol = 'image://' + require('@/assets/serverTopo/server_offline_warn.png');
        }
      }
    }

如果对于树的遍历不是很清楚的话,可以参考我的另一篇文章,里面虽然是遍历树修改连线颜色的效果,但是和修改图片方法是一样的

echarts树图是一种数据可视化图表,用于展示树形结构的数据关系。树图通过节点和边的连接方式,清晰地显示出数据之间的层级关系。 在echarts中,树图的相关参数可以通过echarts官方网站提供的文档进行了解。这个文档中详细介绍了树图的配置项和用法,可以根据自己的需求进行参数的调整和设置。 如果想要实现点击节点收缩的功能,可以使用提供的js脚本。根据引用的说明,需要替换原来的echarts.js文件或在原echarts.js中添加一句代码。可以在压缩包中找到相关的引用介绍和使用说明。 总之,echarts树图是一种功能强大的数据可视化工具,可以用于展示树形结构的数据关系,并且可以通过配置参数和使用相关的js脚本实现各种交互功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [echarts-tree:树图(带查询条件的导航图)](https://blog.csdn.net/WZY_snail/article/details/107343887)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [echarts树图实现点击收缩子节点](https://download.csdn.net/download/sinat_25528181/9507939)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值