赞
踩
1.根据上一条文章中提取的数据(BookDouban250.csv)
2.必要的库
- import pandas as pd
-
- import numpy as np
- from pyecharts import options as opts
- from pyecharts.charts import Bar
- from pyecharts.globals import ThemeType
- from snownlp import SnowNLP
- from pyecharts.charts import Pie,WordCloud, Page
- from pyecharts.components import Table
- from pyecharts.charts import EffectScatter
1.评价数分布柱形图
根据评价人数的最小值和最大值来均匀分布。按分段离散化数据。通过np.linspace计算评价人数的边界,将其分为10个区间。使用pd.cut进行分段离散化,统计每个区间的图书数量,并使用渐变颜色增强可视效果。
- def comment_cnt_bar() -> Bar:
- bar = Bar(
- init_opts=opts.InitOpts(theme=ThemeType.CHALK, width="800px", height="400px", chart_id='bar_cmt'))
- bar.add_xaxis(labels)
- bar.add_yaxis(
- "评价数",
- counts,
- itemstyle_opts=opts.ItemStyleOpts(
- color=color_range,
- opacity=0.8 # 设置透明度
- )
- )
- bar.set_global_opts(
- legend_opts=opts.LegendOpts(pos_left='right'),
- title_opts=opts.TitleOpts(title="评价数量区间分布-柱形图", pos_left='center'),
- toolbox_opts=opts.ToolboxOpts(is_show=False),
- xaxis_opts=opts.AxisOpts(name="评论数", axislabel_opts=opts.LabelOpts(font_size=8)),
- yaxis_opts=opts.AxisOpts(
- name="图书数量",
- axislabel_opts={"rotate": 0},
- splitline_opts=opts.SplitLineOpts(is_show=True, linestyle_opts=opts.LineStyleOpts(type_='solid')),
- ),
- )
- bar.set_series_opts(
- markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值")], symbol_size=35)
- )
- return bar
2.评论情感分布饼图
使用SnowNLP库对评论进行情感分析,根据情感分数将评论划分为积极、中性和消极三类,并通过PyEcharts的Pie类生成饼图展示评论情感的分布。在图表中,展示了积极、中性、消极三类评论的占比情况。
- def emotion_pie() -> Pie:
- # 画饼图
- pie = (
- Pie(init_opts=opts.InitOpts(theme=ThemeType.CHALK, width="450px", height="350px", chart_id='pie1'))
- .add(
- series_name="评价情感分布", # 系列名称
- data_pair=[
- ['积极', pos_count],
- ['中性', mid_count],
- ['消极', neg_count]
- ],
- rosetype="radius", # 是否展示成南丁格尔图
- radius=["30%", "55%"], # 扇区圆心角展现数据的百分比,半径展现数据的大小
- label_opts=opts.LabelOpts(formatter="{b}: {d}%"), # 标签格式化,显示百分比
- itemstyle_opts=opts.ItemStyleOpts(border_width=2, border_color='white'), # 扇形样式,增加边框
- ) # 加入数据
- .set_global_opts( # 全局设置项
- title_opts=opts.TitleOpts(title="短评情感分布-饼图", pos_left='center'), # 标题
- legend_opts=opts.LegendOpts(pos_left='right', orient='vertical') # 图例设置项,靠右,竖向排列
- )
- )
-
- return pie
3.书籍名称词云图
通过PyEcharts的WordCloud类生成词云图,展示书籍名称的词云分布。词云图中,文字大小表示出现频率,通过视觉效果形成图案,直观呈现了书籍名称的特征。
- def book_name_wordcloud() -> WordCloud:
- wc = (
- WordCloud(init_opts=opts.InitOpts(width="450px", height="350px",
- theme=ThemeType.CHALK, chart_id='wc1'))
- .add(series_name="书籍名称",
- data_pair=[(word, 1) for word in text.split()],
- word_size_range=[15, 20],
- width='400px', # 宽度
- height='300px', # 高度
- word_gap=5 # 单词间隔
- )
- .set_global_opts(
- title_opts=opts.TitleOpts(pos_left='center',
- title="书籍名称分析-词云图",
- title_textstyle_opts=opts.TextStyleOpts(font_size=20) # 设置标题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。