一、词云图
词云就是通过形成关键词云层或关键词渲染,过滤掉大量的文本信息,对网络文本中出现频率较高的关键词的视觉上的突出。
import jieba import collections import re from pyecharts.charts import WordCloud from pyecharts.globals import SymbolType from pyecharts import options as opts from pyecharts.globals import ThemeType, CurrentConfig CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/' with open('barrages.txt') as f: data = f.read() # 文本预处理 去除一些无用的字符 只提取出中文出来 new_data = re.findall('[\u4e00-\u9fa5]+', data, re.S) # 只要字符串中的中文 new_data = " ".join(new_data) # 文本分词--精确模式 seg_list_exact = jieba.cut(new_data, cut_all=False) result_list = [] with open('stop_words.txt', encoding='utf-8') as f: con = f.readlines() stop_words = set() for i in con: i = i.replace("\n", "") # 去掉读取每一行数据的\n stop_words.add(i) for word in seg_list_exact: # 设置停用词并去除单个词 if word not in stop_words and len(word) > 1: result_list.append(word) print(result_list) # 筛选后统计 word_counts = collections.Counter(result_list) # 获取前100最高频的词 word_counts_top100 = word_counts.most_common(100) # 打印出来看看统计的词频 print(word_counts_top100) # 链式调用 c = ( WordCloud( init_opts=opts.InitOpts(width='1350px', height='750px', theme=ThemeType.MACARONS) ) .add( series_name="词频", # 系列名称 data_pair=word_counts_top100, # 系列数据项 [(word1, count1), (word2, count2)] word_size_range=[15, 108], # 单词字体大小范围 textstyle_opts=opts.TextStyleOpts( # 词云图文字的配置 font_family='KaiTi', ), shape=SymbolType.DIAMOND, # 词云图轮廓,有 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star' 可选 pos_left='100', # 距离左侧的距离 pos_top='50', # 距离顶部的距离 ) .set_global_opts( title_opts=opts.TitleOpts( # 标题配置项 title='弹幕词云图', title_textstyle_opts=opts.TextStyleOpts( font_family='SimHei', font_size=25, color='black' ), pos_left='500', pos_top='10', ), tooltip_opts=opts.TooltipOpts( # 提示框配置项 is_show=True, background_color='red', border_color='yellow', ), toolbox_opts=opts.ToolboxOpts( # 工具箱配置项 is_show=True, orient='vertical', ) ) .render('弹幕词云图.html')
运行效果如下:
二、仪表盘
from pyecharts.charts import Gauge from pyecharts.globals import CurrentConfig from pyecharts import options as opts CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/' c = ( Gauge() .add( series_name='业务指标', # 系列名称,用于 tooltip 的显示,legend 的图例筛选。 data_pair=[['完成率', 88.8]], # 系列数据项,格式为 [(key1, value1), (key2, value2)] radius='70%', # 仪表盘半径,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts( # 坐标轴轴线配置项 color=[(0.3, "#67e0e3"), (0.7, "#37a2da"), (1, "#fd666d")], width=30, ) ), title_label_opts=opts.LabelOpts( # 轮盘内标题文本项标签配置项 font_size=25, color='blue', font_family='KaiTi' ) ) .set_global_opts( title_opts=opts.TitleOpts( # 标题配置项 title='仪表盘', title_textstyle_opts=opts.TextStyleOpts( font_size=25, font_family='SimHei', color='black', font_weight='bold', ), pos_left="410", pos_top="8", ), legend_opts=opts.LegendOpts( # 图例配置项 is_show=False ), tooltip_opts=opts.TooltipOpts( # 提示框配置项 is_show=True, formatter="{a} <br/>{b} : {c}%", ) ) .render('gauge.html') )
运行效果如下:
三、水球图
from pyecharts import options as opts from pyecharts.charts import Grid, Liquid from pyecharts.commons.utils import JsCode from pyecharts.globals import CurrentConfig, ThemeType CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/' lq_1 = ( Liquid() .add( series_name='电量', # 系列名称,用于 tooltip 的显示,legend 的图例筛选。 data=[0.25], # 系列数据,格式为 [value1, value2, ....] center=['60%', '50%'], # 水球外形,有' circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow' 可选。 # 默认 'circle' 也可以为自定义的 SVG 路径 shape='circle', color=['yellow'], # 波浪颜色 Optional[Sequence[str]] = None, is_animation=True, # 是否显示波浪动画 is_outline_show=False, # 是否显示边框 ) .set_global_opts(title_opts=opts.TitleOpts(title='多个Liquid显示')) ) lq_2 = ( Liquid() .add( series_name='数据精度', data=[0.8866], center=['25%', '50%'], label_opts=opts.LabelOpts( font_size=50, formatter=JsCode( """function (param) { return (Math.floor(param.value * 10000) / 100) + '%'; }""" ), position='inside' ) ) ) grid = Grid(init_opts=opts.InitOpts(theme=ThemeType.DARK)).add(lq_1, grid_opts=opts.GridOpts()).add(lq_2, grid_opts=opts.GridOpts()) grid.render("multiple_liquid.html")
运行效果如下:
很好玩把,想学吗?想学就加群呀:1136192749