Python之pyecharts数据可视化,词云图,仪表盘!

一、词云图

词云就是通过形成关键词云层或关键词渲染,过滤掉大量的文本信息,对网络文本中出现频率较高的关键词的视觉上的突出。

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')

运行效果如下:

Python之pyecharts数据可视化,词云图,仪表盘!

二、仪表盘

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')
)

运行效果如下:

Python之pyecharts数据可视化,词云图,仪表盘!

三、水球图

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")

运行效果如下:

Python之pyecharts数据可视化,词云图,仪表盘!

很好玩把,想学吗?想学就加群呀:1136192749

 

上一篇:python分析2020年全球亿万富翁福布斯排行榜,有钱人最多的行业竟然是它!


下一篇:【Pyecharts】使用十字准星指示器(鼠标移动出现十字交叉并自动吸附)