我是在使用Word2Vec计算关联词的余弦距离之后,想要更好的展示出来的时候,遇到的这种情况,就做了下拓展。

画图的步骤主要分为:

1. 将距离数据(或者相关数据)读入;

2. 按照一定的格式和参数将数据保存为json字符串;

3. 根据json串,绘制关联图。

具体而言,主要是:

<1>. 首先有一批数据,如图所示:

<2>. 导入所需要的包

import json

import pandas as pd

import random

import copy

<3>. 产生颜色随机值的函数

# 随机颜色

def randomcolor_func():

color_char = ['1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']

color_code = ""

for i in range(6):

color_code += color_char[random.randint(0,14)] # randint包括前后节点0和14

return "#"+color_code

<4>. 生成随机坐标

# 随机坐标

#生成随机数,浮点类型

def generate_position(n):

# n = 10

for i in range(n):

x = round(random.uniform(-2000, 2000), 5) #一定范围内的随机数,范围可变

y = round(random.uniform(-2000, 2000), 5) #控制随机数的精度round(数值,精度)

return x, y

<5>. 生成json格式的节点数据

def create_json(data, weights):

# 自定义节点

address_dict = {"nodes":[], "edges":[]}

node_dict = {

"color": "",

"label": "",

"attributes": {},

"y": None,

"x": None,

"id": "",

"size": None

}

edge_dict = {

"sourceID": "",

"attributes": {},

"targetID": "",

"size": None

}

# 给节点赋值

for ii in range(len(data)):

for jj in range(len(data.iloc[ii])):

# node,"attributes"属性可自行设置

node_dict[r"color"] = randomcolor_func()

node_dict[r"label"] = data.iloc[ii, jj]

x, y = generate_position(1)

node_dict[r"y"] = y

node_dict[r"x"] = x

node_dict[r"id"] = data.iloc[ii, jj]

node_dict[r"size"] = int(weights.loc[data.iloc[ii, jj]])

tmp_node = copy.deepcopy(node_dict)

address_dict[r"nodes"].append(tmp_node)

for ii in range(len(data)):

for jj in range(1, len(data.iloc[ii])):

# edge

edge_dict[r"sourceID"] = data.iloc[ii, 0]

edge_dict[r"targetID"] = data.iloc[ii, jj]

edge_dict[r"size"] = 2

tmp_edge = copy.deepcopy(edge_dict)

address_dict["edges"].append(tmp_edge)

return address_dict

<6>. 主函数生成json数据

if __name__ == '__main__':

# read data

data = pd.read_excel(r'test_josn_data.xlsx', 0)

weights = pd.DataFrame({"词频":[100, 40, 30, 20, 90, 50, 35, 14, 85, 38, 29, 10]},

index = ['球类','篮球','足球','羽毛球','美食','肯德基','火锅','烤鱼','饮料','可乐','红茶','奶茶']) #建立索引权值列表

address_dict = create_json(data, weights)

with open("write_json.json", "w", encoding='utf-8') as f:

# json.dump(dict_, f) # 写为一行

json.dump(address_dict, f, indent=2, ensure_ascii=False) # 写为多行

最后形成的json数据如下:

<7>. 绘制关联图,里面的文件读取和保存地址自行修改,write_json.json 就是上面保存的json文件

import pyecharts.options as opts

from pyecharts.charts import Graph

import json

with open(r"D:\Python_workspace\spyder_space\test_各种功能\write_json.json", encoding='utf-8') as f: #设置以utf-8解码模式读取文件,encoding参数必须设置,否则默认以gbk模式读取文件,当文件中包含中文时,会报错

data = json.load(f)

#print(data)

nodes = [

{

"x": node["x"],

"y": node["y"],

"id": node["id"],

"name": node["label"],

"symbolSize": node["size"],

"itemStyle": {"normal": {"color": node["color"]}},

}

for node in data["nodes"]

]

edges = [{"source": edge["sourceID"], "target": edge["targetID"]} for edge in data["edges"]]

(

Graph(init_opts=opts.InitOpts(width="1600px", height="800px"))

.add(

series_name="",

nodes=nodes,

links=edges,

layout="none",

is_roam=True,

is_focusnode=True,

label_opts=opts.LabelOpts(is_show=True),

linestyle_opts=opts.LineStyleOpts(width=0.5, curve=0.3, opacity=0.7),

)

.set_global_opts(title_opts=opts.TitleOpts(title="热词对应的关联词"))

.render("关联词图.html")

)

最后,就生成了最开始的那张图。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持python博客。

python 画系统关联图_Python基于pyecharts实现关联图绘制相关推荐

  1. 用python画动态三维轨迹_Python学习(一) —— matplotlib绘制三维轨迹图

    在研究SLAM时常常需要对其输出的位姿进行复现以检测算法效果,在ubuntu系统中使用Python可以很好的完成相关的工作. 一. Ubuntu下Python的使用 在Ubuntu下使用Python有 ...

  2. python画同心圆循环源代码_Python Turtle:使用circle()方法绘制同心圆

    我展示了用Python的Turtle模块绘制的孙子图案, 他要求看同心圆. 我以为用乌龟的circle()画它们会更快 而不是编写自己的代码来生成一个圆.哈!我被困住了. 我看到产生的圆圈开始在乌龟的 ...

  3. 用python画多个圆_Python用图例在网格上绘制多个圆

    我想在一个N乘M的网格上画出不同颜色和相同大小的圆.在x,y位置,可以是一个圆或什么都不是.在 我希望每个专栏都有一个x标签(这将是一个星期),和一个ylabel(这将是一个主题).在 现在,我找到了 ...

  4. 用python画动态三维轨迹_python 画3维轨迹图并进行比较的实例

    一. 数据的格式 首先我们需要x,y,z三个数据进行画图.从本实验用到的数据集KITTI 00.txt中举例: 1.000000e+00 9.043680e-12 2.326809e-11 5.551 ...

  5. 用python画渐变的圆_python画环形图的方法

    本文实例为大家分享了python画环形图的具体代码,供大家参考,具体内容如下 import os import pandas as pd import matplotlib.pyplot as plt ...

  6. python画3d圆形图_Python之Numpy:二元函数绘制/三维数据可视化/3D

    意义 在机器学习任务中选择计算模型或者学习数学时,可视化有助于研究函数值的变化趋势(观察收敛.分布.几何形状等),带来直观的感受. 源码 # 绘制二元函数 # 参考文献 # + python画二元函数 ...

  7. python画图库哪个好_python画图库

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我默默的用python画了下面这张图. 依稀记得女同事看了之后,立刻转身离去,并 ...

  8. python 画出决策边界_python 画出使用分类器得到的决策边界

    python 画出使用分类器得到的决策边界 发布时间:2020-09-25 21:10:09 来源:脚本之家 阅读:113 作者:星之空殇 获取数据集,并画图代码如下: import numpy as ...

  9. python画圆填色_python turtle我想用五种颜色画五个圆,并且用画圆周的颜色填充,老是出问题,怎么回事,怎么修改?:python教程同心圆...

    python turtle画4个同心圆方法 from turtle import * def test(): reset() circle(30,-360) up() goto(0,-10) down ...

最新文章

  1. 【Android NDK 开发】JNI 动态注册 ( 动态注册流程 | JNI_OnLoad 方法 | JNINativeMethod 结构体 | GetEnv | RegisterNatives )
  2. java常用框架总结
  3. linux c语言 readline,Linux C代码实现读取配置文件示例
  4. Trick(二)——获取一个网页的 title 信息
  5. JAVA synchonized Lock类----简单总结笔记
  6. java项目文档管理_基于jsp的文档管理系统-JavaEE实现文档管理系统 - java项目源码...
  7. JQuery.BlockUI弹框插件
  8. Android10 BT MAC地址获取流程
  9. php控制表格颜色,php – 表格列的背景颜色
  10. 微型计算机是第四代计算机的产物,计算机的发展已经过了4代,其中()是第四代计算机 - 问答库...
  11. 2021年淘宝双11跨店满减如何使用?
  12. 计算机科技兴趣小组活动总结,科技兴趣小组的活动总结
  13. 谷歌身份验证器 手表_6条使您的三星手表更加Google-y的提示
  14. 拯救流浪猫 | 「喵先锋」系列数字版权盲盒明日开抢
  15. EROFS 和 方舟 辩证的看 —— EROFS
  16. (十) 深度学习笔记 | 关于优化器Adam
  17. Words for Windows
  18. matlab做能谱图,求一个能谱分析的matlab程序
  19. oracle ra hcustomers,EBS 11i升级R12详解
  20. 基于温湿度和烟雾传感器的火灾检测系统设计

热门文章

  1. LeetCode刷题指南(一)
  2. Leet Code OJ 226. Invert Binary Tree [Difficulty: Easy]
  3. 正则表达式(Java版整理)
  4. SpringMVC之组合注解@GetMapping
  5. Google Spanner:谷歌的全球分布式数据库
  6. linux-搜索查找类
  7. c语言编译不了什么情况,c语言编译没错但是无法运行
  8. 操作篇 了解学习NAT实验(关于静态NAT、动态NAT、EasyIP、端口映射的配置方法))
  9. mysql80连接不上本地服务器_Windows Server 2016 远程桌面本地连接不上
  10. 被替换的项目不是替换值长度的倍数_面试官,为啥HashMap的长度是2的n次方?