山东大学软件学院项目实训个人纪实(三)——可视化的探索

   写作目的:为积极响应戴鸿君老师对项目实训内容的建设性意见,特写本系列个人纪实,记录团队在项目实训的工作中个人的贡献。

        本文旨在分析如何将历史判决条款中的重要案例与重要判决法条,以可视化的形式,如饼图,词云等,呈现给用户

        一个简单的法律文书生成系统的实用性并不强,因此团队考虑如何在视觉上优化用户体验,实现可视化的数据展示,因此我在如何将数据更加优美地展示在用户的眼中。

可视化的基本技术栈:

  1. 数据存储和处理

    • 数据库管理系统(如MySQL, PostgreSQL, MongoDB)
    • 数据仓库解决方案(如Amazon Redshift, Google BigQuery)
    • 数据处理和分析工具(如Apache Spark, Hadoop)
  2. 数据清洗和转换

    • ETL(Extract, Transform, Load)工具(如Talend, Apache NiFi)
    • 脚本语言(如Python, R, JavaScript)
  3. 数据建模

    • 数据建模工具(如ER/Studio, MySQL Workbench)
    • BI(Business Intelligence)工具(如Tableau, Power BI)
  4. 前端开发

    • HTML/CSS/JavaScript:基础的Web开发技术。
    • 前端框架和库(如React, Angular, Vue.js)
    • 数据可视化库(如D3.js, Chart.js, Highcharts)
  5. 后端开发

    • 服务器端语言(如Java, Python, Node.js)
    • Web框架(如Express.js, Django, Flask)
    • RESTful API设计
  6. API和集成

    • 数据API服务(如Google Charts API, Twitter API)
    • 第三方服务集成(如Google Maps, Facebook)
  7. 可视化设计

    • 设计原则和最佳实践
    • 用户体验(UX)设计工具(如Sketch, Adobe XD, Figma)
  8. 交互式可视化

    • 交互式图表和仪表板工具(如Tableau, Looker)
    • 交互式可视化编程环境(如Jupyter Notebook)
  9. 性能优化

    • 前端性能优化工具(如Webpack, Gulp)
    • 后端性能优化技术(如缓存策略, 数据库索引)
  10. 安全性

    • 数据加密和安全传输(如HTTPS, SSL/TLS)
    • 用户认证和授权(如OAuth, JWT)
  11. 部署和运维

    • 云服务平台(如AWS, Google Cloud Platform, Azure)
    • 容器化和编排工具(如Docker, Kubernetes)
    • 持续集成和持续部署(CI/CD)工具(如Jenkins, GitLab CI)
  12. 测试

    • 单元测试和集成测试框架(如Jest, Mocha, Selenium)
    • 性能测试工具(如LoadRunner, JMeter)
  13. 项目管理和协作

    • 项目管理工具(如Jira, Trello)
    • 版本控制系统(如Git)
    • 代码编辑器和IDE(如Visual Studio Code, IntelliJ IDEA)
  14. 文档和支持

    • 文档生成工具(如JSDoc, Styleguidist)
    • 用户手册和在线帮助系统

可视化的基本方式:(以python和pyecharts为例)

import pandas as pd
import jieba
from pyecharts.charts import WordCloud
from pyecharts import options as opts
from collections import Counter

# 读取 Excel 文件
df = pd.read_excel('起风了评论表.xls')

# 清洗和分词
def clean_and_segment(text):
    # 去除标点符号和数字
    text = ''.join([char for char in text if (char.isalpha() or char == ' ') and not char.isdigit()])
    # 分词
    words = jieba.cut(text, cut_all=False)
    return ' '.join(words)

# 应用清洗和分词函数
df['comment'] = df['评论内容'].apply(clean_and_segment)

# 提取关键词(这里简化处理,只取前10个词)
words = ' '.join(df['comment']).split()
# 将所有评论合并成一个字符串
all_comments = ' '.join(df['comment'])

# 使用 Counter 来计算每个单词的出现次数
word_counts = Counter(all_comments.split())

# 获取出现次数最多的前10个单词
top_words = word_counts.most_common(100)

# 将单词和它们的权重转换为一个字典
words_dict = {word: count for word, count in top_words}

# 将字典转换为列表,每个元素是一个包含两个元素的元组(单词和权重)
words_list = list(words_dict.items())

# 生成词云图
word_cloud = (
    WordCloud()
    .add("", words_list, word_size_range=[30, 100], shape='star')
    .set_global_opts(title_opts=opts.TitleOpts(title="评论关键词词云图"))
)

# 渲染图表到 HTML 文件中
word_cloud.render('起风了评论表关键词词云图.html')

还可以进行这样的尝试:如果需要使用其他类型的图表的话

from pyecharts import options as opts
#导入Pie类
from pyecharts.charts import Pie

#饼图的数据类型,为列表的嵌套:[[key1, value1], [key2, value2]]
song_list = [972, 685, 553, 852, 472, 257, 243, 1307, 320, 438]
singer_list = ['周杰伦','林俊杰','王力宏','张杰','汪苏泷','许嵩','薛之谦','陈奕迅','李荣浩','陶喆']
#使用zip函数后[(972, '周杰伦'), (685, '林俊杰'), (553, '王力宏'), (852, '张杰'), (472, '汪苏泷'), (257, '许嵩'), (243, '薛之谦'), (1307, '陈奕迅'), (320, '李荣浩'), (438, '陶喆')]
#再将其中的元组转换成列表
data_pair =  [list(i) for i in zip(singer_list,song_list)]

def set_pie():
    pie = Pie()
    pie.add(
        series_name = '',
        data_pair = data_pair,
        color = 'red',
        #设置图表的标签(指示图表区域),formatter是设置标签内容格式,在饼图中:{a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)
        label_opts = opts.LabelOpts(is_show=True,formatter='{b}:{c} \n ({d}%)'),
        # 是否展示成南丁格尔图,通过半径区分数据大小,有'radius'和'area'两种模式。
        # radius:扇区圆心角展现数据的百分比,半径展现数据的大小
        # area:所有扇区圆心角相同,仅通过半径展现数据大小
        rosetype = 'radius',
        # 饼图的半径,数组的第一项是内半径,第二项是外半径
        # 默认设置成百分比,相对于容器高宽中较小的一项的一半
        radius=['20%','75%']
    )
    pie.set_global_opts(
        #设置图例形状,位置,orient表示横向还是纵向,horizontal和vertical
        legend_opts=opts.LegendOpts(legend_icon='pin',orient='vertical',pos_right='10%'),
        #设置图表主标题,副标题和标题位置
        title_opts=opts.TitleOpts(title = '我喜欢的九位歌手',subtitle='数错了,是十位',pos_left='20%'),
    )
    #设置饼图的颜色,可选项,不设也有默认的颜色。
    pie.set_colors(['blue','red','orange','yellow','green','purple','black','brown','pink','grey'])
    return pie


pie = set_pie()
pie.render('饼图.html')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值