中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Python中使用pyecharts繪制關聯圖

發布時間:2020-12-25 16:12:29 來源:億速云 閱讀:494 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關如何在Python中使用pyecharts繪制關聯圖,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

畫圖的步驟主要分為:

1. 將距離數據(或者相關數據)讀入;

2. 按照一定的格式和參數將數據保存為json字符串;

3. 根據json串,繪制關聯圖。

具體而言,主要是:

<1>. 首先有一批數據,如圖所示:

如何在Python中使用pyecharts繪制關聯圖

<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數據如下:

如何在Python中使用pyecharts繪制關聯圖

<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中使用pyecharts繪制關聯圖有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲阳县| 新巴尔虎右旗| 长寿区| 昌江| 拉孜县| 宽甸| 来凤县| 平邑县| 阜南县| 马公市| 舞阳县| 苏尼特右旗| 阆中市| 商水县| 雷波县| 军事| 荣成市| 永善县| 上虞市| 宝清县| 广德县| 宁乡县| 德江县| 凤山县| 宝鸡市| 华亭县| 佛冈县| 罗江县| 大渡口区| 白沙| 城口县| 苏州市| 三江| 崇左市| 宝应县| 汉寿县| 通化市| 即墨市| 湟源县| 土默特右旗| 赣榆县|