python pyecharts数据可视化 词云图 仪表盘 水球图

2021-01-23 13:39:51 浏览数 (1)

文章目录

一、词云图

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

代码语言:txt复制
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')
)

运行效果如下:

二、仪表盘

代码语言:txt复制
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')
)

运行效果如下:

三、水球图

代码语言:txt复制
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 CSDN:https://yetingyun.blog.csdn.net/ 本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。 觉得文章对你有帮助、让你有所收获的话,期待你的点赞呀,不足之处,也可以在评论区多多指正。

0 人点赞