数据可视化Pyecharts之词云图,主题河流图,关系图


词云图

  • 对文件word.txt里的各词语绘制各个单词的词云图
    txt文件中部分单词后面有逗号,需要去除。另外对各词词频进行统计的时候忽略词的大小写

TXT文件下载

from pyecharts import WordCloud

#删除逗号
with open('./data/word.txt') as f:
    w = f.read()
#print(s)
w1 = w.lower().replace(",","").split()
#转小写.替换逗号.把字符串转成字符串组
#print(w1)

#词频统计
words = {} #建立字典

for word in w1:
    if word not in words:
        words[word] = 1
    else:
        words[word] = words[word] + 1
print(words)

wc = WordCloud()
wc.add("",words.keys(),words.values(), #字典d = {key1 : value1, key2 : value2 }
       word_size_range=[20, 100], #单词字体大小
       )
wc.render("wc.html")

生成如图所示,成品链接wordcloud.png

主题河流图

  • 对文件sale_amount.csv中的数据绘制主题河流图

CSV文件下载

from pyecharts import ThemeRiver
import pandas as pd

data = pd.read_csv("./data/sale_amount.csv",encoding="gbk")
#print(data.head(5))
data["date"] = pd.to_datetime(data["date"],format='%Y-%m-%d') #转换时间类型并变为%Y-%m-%d
#print(data.head(5))
data.set_index('date',inplace=True)
#set_index设置索引(替换,真实覆盖)
#print(data)
ls=data.columns  #读取列表列头部
#print(data.columns)
dataone=[]
for d in range(data.shape[0]):
       for i in range(data.shape[1]):
              dataone.append([str(data.index[d]),data.iloc[d,i],data.columns[i]])
        #append结尾加[]内数据,间隔        #d行      #d行i列           #i列
print(dataone)
tr = ThemeRiver("主题河流图示意图")
tr.add(ls,dataone,
       is_label_show=True
       )
tr.render("tr.html")
  • 生成如图所示,成品链接ThemeRiver.png

关系图

  • 给定文件relation.json,获取出文件内容为一个列表,其中:图片1.png
    根据json文件配置的结点信息绘制出对应的关系图,要求关系图中连接线为曲线(设置line_curve为0.2)。
  • (注意:查看文件结点信息,其中部分结点配置了结点类目(category)!!)

JSON文件下载

import json
from pyecharts import Graph
#读取json文件
with open("./data/relation.json",encoding="utf-8") as f:
    node = json.load(f)
#print(node)
#处理json文件
data = node[0] #选择第一层[]内内容
link = node[1] #第二[]内容
#print(link)
name = []
for j in data:
    name.append({"name": j.get('category')})  #把有连接的节点写成name放到图例上
print(name)
#print(name)
graph = Graph("",width=1200,height=800)
graph.add("",data,link,
          name,
          graph_repulsion=50, #节点之间的斥力因子,就当是图的大小吧,这个设置8000你看区别就懂了
          line_curve=0.2, #线弯曲程度
      #    graph_edge_length=10, 设置节点距离一般没啥用
          is_label_show=True,
          )
graph.render("graph.html")
  • 生成如图所示,成品链接graph.png

声明:芫荽 Blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 数据可视化Pyecharts之词云图,主题河流图,关系图


天若有情天亦老,人间正道是沧桑!