基于pyecharts.charts绘制图形
最终效果展示:
准备工作
import pandas as pd
from pyecharts.charts import Map, Pie, Bar, WordCloud, Page, EffectScatter # 制作图形
from pyecharts.components import Table # 制作表格
from pyecharts import options as opts
from pyecharts.globals import ThemeType # 全局设置主题颜色
import numpy as np
from snownlp import SnowNLP # 情感分析
theme_config = ThemeType.CHALK # 颜色方案
# 表格和标题的颜色(设置多种主题)绘制图形的底色
table_color = ""
if theme_config == ThemeType.DARK:
table_color = '#333333'
elif theme_config == ThemeType.CHALK:
table_color = '#293441'
elif theme_config == ThemeType.PURPLE_PASSION:
table_color = '#5B5C6E'
elif theme_config == ThemeType.ROMANTIC:
table_color = '#F0E8CD'
elif theme_config == ThemeType.ESSOS:
table_color = '#FDFCF5'
else:
table_color = ''
# 读取文件(根据自己的数据文件来)
df_file = pd.read_csv("../data/微博评论_女篮世界杯.csv", parse_dates=["评论时间"])
看一眼我的爬虫数据:(我用的是csv读取,也可以先存入到数据库中在进行读取)
1、柱状图
def bar():
#parse_dates=['评论时间']只有在后面加评论时间时,才能将时间格式化
df = df_file
data = df[['评论点赞数']]
# 设置分段
bins = [0, 2, 5, 10, 50, 500, 100000]
# 设置标签
labels = ['0-2', '2-5', '5-10', '10-50', '50-500', '500-10w']
# 按分段离散化数据
segments = pd.cut(data['评论点赞数'], bins, labels=labels) # 按分段切割数据
counts = pd.value_counts(segments, sort=False).values.tolist() # 统计个数
c = (
Bar(init_opts=opts.InitOpts(theme=theme_config, width="450px",
height="350px", chart_id=1)) # 初始化条形图
.add_xaxis(labels, ) # 增加x轴数据
.add_yaxis("点赞量", counts) # 增加y轴数据
.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="点赞量", # x轴名称
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')),
), # y轴名称
)
# 标记最大值
.set_series_opts(
markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max",
name="最大值"), ],symbol_size=35) # 标记符号大小
)
)
c.render("1.html")
print('生成完毕:评论数分布-柱形图.html')
return c
效果展示:
2、饼状图
def pie():
df = pd.read_csv("../data/微博评论_乔欣.csv")
<