Echarts的重名问题解决(结合neo4j)

Echarts的重名问题解决(结合neo4j)

前提:要求从neo4j的库中读取节点然后在前端绘制知识图谱,于是我找到了Echarts中的人物关系图,看了网站中的教程,发现大家都是用节点的name来充当索引,于是我也效仿了该做法,结果发现从neo4j中获取到的节点有太多重名的节点,前端无法解析这些重名节点造成前端一直报错 duplicate id or name。

解决办法:获取节点的实时ID

`nodesearch = matcher.match("node", name=search_name).first() //该步骤从neo4j中获取到名为search_name的节点`
'id': '%d'%id(nodesearch),//在将节点插入nodes数组的时候加上id这一项 id(node)可以获取节点的实时ID '%d'%可以将id转化为字符串

注意
1.我在过程中发现只有将id都转化为字符串才能正确使用在前端上
2.由于我要画的图需要以名为search_name的节点为中心,所以links数组中的source应该一直是nodesearch的id

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的示例代码,展示了如何使用Vue.js、Neo4jECharts来实现图谱可视化: 1. 安装依赖: ``` npm install neo4j-driver echarts --save ``` 2. 在Vue.js组件中引入neo4j-driver和echarts: ```javascript import neo4j from 'neo4j-driver'; import echarts from 'echarts'; ``` 3. 定义Neo4j连接: ```javascript const driver = neo4j.driver( 'bolt://localhost:7687', neo4j.auth.basic('neo4j', 'password') ); ``` 4. 实现查询Neo4j数据库的函数: ```javascript async function runCypherQuery(query, params) { const session = driver.session(); const result = await session.run(query, params); session.close(); return result.records; } ``` 5. 在Vue.js组件中定义ECharts实例和数据: ```javascript data() { return { chart: null, chartData: { nodes: [], links: [] } }; }, mounted() { this.chart = echarts.init(this.$refs.chart); } ``` 6. 实现查询Neo4j数据库并将结果转换为ECharts数据格式的函数: ```javascript async function queryAndTransformData() { const result = await runCypherQuery('MATCH (n)-[r]->(m) RETURN n,r,m', {}); const nodes = []; const links = []; for (const record of result) { const node1 = record.get('n'); const node2 = record.get('m'); const link = record.get('r'); const node1Index = nodes.findIndex(node => node.id === node1.identity.toString()); const node2Index = nodes.findIndex(node => node.id === node2.identity.toString()); if (node1Index === -1) { nodes.push({ id: node1.identity.toString(), name: node1.properties.name }); } if (node2Index === -1) { nodes.push({ id: node2.identity.toString(), name: node2.properties.name }); } links.push({ source: node1.identity.toString(), target: node2.identity.toString(), name: link.type }); } return { nodes, links }; } ``` 7. 在Vue.js组件中实现获取数据、更新ECharts图表的函数: ```javascript async function updateChart() { const data = await queryAndTransformData(); this.chartData = data; const option = { series: [ { type: 'graph', layout: 'force', force: { repulsion: 100, edgeLength: 50 }, data: data.nodes.map(node => ({ name: node.name, draggable: true })), links: data.links.map(link => ({ source: link.source, target: link.target, name: link.name })), label: { show: true }, lineStyle: { width: 2, curveness: 0.3, color: '#999' } } ] }; this.chart.setOption(option); } ``` 8. 在Vue.js组件中调用updateChart()函数以获取数据并更新ECharts图表: ```javascript mounted() { this.chart = echarts.init(this.$refs.chart); this.updateChart(); }, methods: { async updateChart() { // 实现updateChart函数的代码 } } ``` 希望这个示例代码能够帮助你开始使用Vue.js、Neo4jECharts来实现图谱可视化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值