当前位置: 首页 > news >正文

网站文章怎么更新时间百度账号安全中心官网

网站文章怎么更新时间,百度账号安全中心官网,机械设备 东莞网站建设,响应式网站制作视频用PythonFlask打造可视化武侠人物关系图生成器:从零到一的实战全记录 一、缘起:一个程序小白的奇妙探索之旅 作为一个接触Python仅13天的编程萌新,我曾以为开发一个完整的应用是遥不可及的事情。但在DeepSeek的帮助下,我竟用短短…

用Python+Flask打造可视化武侠人物关系图生成器:从零到一的实战全记录


一、缘起:一个程序小白的奇妙探索之旅

作为一个接触Python仅13天的编程萌新,我曾以为开发一个完整的应用是遥不可及的事情。但在DeepSeek的帮助下,我竟用短短半天时间完成了一个本地化武侠人物关系图生成器的开发!这个工具不仅能批量管理门派和人物,还能自动生成关系图并导出Excel表格,整个过程充满了挑战与惊喜。

本文将完整记录我的开发过程,手把手带你用Python+Flask实现这个有趣的项目,最终效果如下:

初始界面

网页界面,可直接预览图形,导出EXCEL,下载PNG和PDF文件


二、制作思路:如何化繁为简
  1. 核心需求

    • 批量添加门派和人物
    • 可视化展示人物关系
    • 支持增删改查操作
    • 导出结构化数据
  2. 技术选型

    • Flask:轻量级Web框架,快速搭建后端服务
    • Graphviz:专业关系图绘制工具
    • openpyxl:Excel文件生成库
    • HTML+JavaScript:前端交互实现
  3. 架构设计

    提交数据
    前端界面
    Flask后端
    数据存储
    生成关系图
    导出Excel

三、准备工作:配置开发环境
  1. 基础工具

    • Python 3.8+
    • VS Code/PyCharm
    • 浏览器(推荐Chrome)
  2. 安装依赖库

    pip install flask graphviz openpyxl
    
  3. Graphviz安装

    • Windows:官网下载安装包
    • Mac:brew install graphviz
    • Linux:sudo apt-get install graphviz

四、实战开发:七步打造完整系统
步骤1:创建项目结构
📁 Novel-Relationship-Generator
├── 📁 static
│   └── 📁 output        # 存放生成图片
├── 📁 templates
│   └── index.html      # 前端页面
└── app.py              # 主程序
步骤2:编写后端核心(app.py)
from flask import Flask, render_template, request, jsonify, send_file
from graphviz import Digraph
import re
from openpyxl import Workbookapp = Flask(__name__)# 数据存储
characters = []
sects = ["武当派", "少林派", "峨眉派", "嵩山派"]  # 初始门派
relations = []
sect_descriptions = {"武当派": "以柔克刚的内家拳法","少林派": "天下武功出少林","峨眉派": "女子为主的武林门派","嵩山派": "五岳剑派之首"
}
char_descriptions = {}# 此处省略接口代码(与前文相同)...if __name__ == "__main__":app.run(debug=True)
步骤3:前端页面开发(templates/index.html)
<!-- 门派添加模块 -->
<form id="add-sects-form"><label>批量添加门派(支持逗号/分号/空格分隔):</label><textarea name="sects" rows="3" placeholder="示例:华山派,日月神教"></textarea><button type="submit">添加门派</button>
</form><!-- 人物关系展示区 -->
<div class="right-panel"><h2>武林门派谱</h2><div id="characters-list"><!-- 动态加载门派及人物 --></div>
</div>
步骤4:添加示例数据
# 示例人物数据
characters.extend([{"name": "张三丰", "sect": "武当派"},{"name": "宋远桥", "sect": "武当派"},{"name": "空闻大师", "sect": "少林派"},{"name": "灭绝师太", "sect": "峨眉派"},# 可继续添加其他人物...
])# 示例关系数据
relations.extend([{"from": "张三丰", "to": "宋远桥", "label": "师徒"},{"from": "空闻大师", "to": "张三丰", "label": "故交"},# 添加更多关系...
])
步骤5:实现关系图生成
@app.route("/generate_graph", methods=["POST"])
def generate_graph():dot = Digraph(comment="武林关系图")dot.attr(rankdir="LR", nodesep="0.3")# 添加门派分组for sect in sects:with dot.subgraph(name=f"cluster_{sect}") as sub:sub.attr(label=sect, style="filled", color="lightgrey")for char in characters:if char["sect"] == sect:sub.node(char["name"], shape="box")# 绘制关系线for rel in relations:dot.edge(rel["from"], rel["to"], label=rel["label"])dot.render("static/output/relationship.gv", format="png")return jsonify({"status": "success"})
步骤6:导出Excel功能
@app.route("/export_excel")
def export_excel():wb = Workbook()ws = wb.activews.append(["序号", "门派", "门派简介", "人物", "人物简介"])row_num = 1for sect in sects:desc = sect_descriptions.get(sect, "")members = [c for c in characters if c["sect"] == sect]for i, char in enumerate(members):char_desc = char_descriptions.get(char["name"], "")if i == 0:ws.append([row_num, sect, desc, char["name"], char_desc])else:ws.append([row_num, sect, "", char["name"], char_desc])row_num += 1wb.save("武林人物表.xlsx")return send_file("武林人物表.xlsx")
步骤7:运行与测试
python app.py

访问 http://localhost:5000 即可体验完整功能


五、项目亮点总结
  1. 便捷操作

    • 批量导入/导出功能节省时间
    • 实时可视化反馈
  2. 技术融合

    • 前后端分离架构
    • 多格式输出支持(PNG/PDF/Excel)
  3. 扩展性强

    • 支持自定义样式
    • 易于添加新功能模块

六、心得体会:新手的编程启示
  1. 小步快跑:从简单功能入手,逐步迭代完善
  2. 善用工具:Graphviz等成熟库能大幅提升效率
  3. 调试技巧
    • 使用浏览器开发者工具查看网络请求
    • 添加print语句追踪数据流向
  4. 文档价值
    • Flask官方文档
    • Graphviz语法指南

给读者的建议:不要被复杂的功能吓倒,把大问题拆解成小模块逐个击破。就像搭建乐高积木一样,把每个Python功能模块看作一块积木,最终就能拼出完整的作品!


立即动手尝试吧! 基于这个项目还可以拓展思路,比如把做一个日常工作管理的页面等,所以马上行动起来把,你的世界正等待被创造~ 🎉
目前刚开始学编程,并试着在CSDN发表文章,如果需要完整代码,可以在评论区留言并私信我。


文章转载自:
http://biennium.rtzd.cn
http://interosseous.rtzd.cn
http://tinter.rtzd.cn
http://wilhelmina.rtzd.cn
http://cyclopic.rtzd.cn
http://gesticulant.rtzd.cn
http://insalivate.rtzd.cn
http://boatyard.rtzd.cn
http://gunman.rtzd.cn
http://arteriosclerosis.rtzd.cn
http://megass.rtzd.cn
http://maloti.rtzd.cn
http://acrobatism.rtzd.cn
http://alps.rtzd.cn
http://bespangled.rtzd.cn
http://diester.rtzd.cn
http://dizzyingly.rtzd.cn
http://conduct.rtzd.cn
http://codetermine.rtzd.cn
http://drawbench.rtzd.cn
http://amphitheatric.rtzd.cn
http://kumite.rtzd.cn
http://sericiculturist.rtzd.cn
http://shoal.rtzd.cn
http://carriageway.rtzd.cn
http://leper.rtzd.cn
http://dependency.rtzd.cn
http://ischial.rtzd.cn
http://attentat.rtzd.cn
http://participialize.rtzd.cn
http://snuffle.rtzd.cn
http://testitis.rtzd.cn
http://isopulse.rtzd.cn
http://insight.rtzd.cn
http://waadt.rtzd.cn
http://nucleation.rtzd.cn
http://ungirt.rtzd.cn
http://floccus.rtzd.cn
http://adventuress.rtzd.cn
http://unchaste.rtzd.cn
http://umbel.rtzd.cn
http://voyeurist.rtzd.cn
http://housekeeper.rtzd.cn
http://loanblend.rtzd.cn
http://dignified.rtzd.cn
http://dunlin.rtzd.cn
http://gatefold.rtzd.cn
http://cumbrian.rtzd.cn
http://reid.rtzd.cn
http://pshaw.rtzd.cn
http://dumb.rtzd.cn
http://sensualism.rtzd.cn
http://gasometer.rtzd.cn
http://pranidhana.rtzd.cn
http://stateliness.rtzd.cn
http://mortise.rtzd.cn
http://sialidase.rtzd.cn
http://diffrangible.rtzd.cn
http://trass.rtzd.cn
http://tadpole.rtzd.cn
http://biology.rtzd.cn
http://larcener.rtzd.cn
http://lawlessly.rtzd.cn
http://airfoil.rtzd.cn
http://slavist.rtzd.cn
http://conmanship.rtzd.cn
http://peopleware.rtzd.cn
http://agrometeorological.rtzd.cn
http://jamesonite.rtzd.cn
http://russophobe.rtzd.cn
http://unappeasable.rtzd.cn
http://diadochokinesia.rtzd.cn
http://ailurophilia.rtzd.cn
http://overpot.rtzd.cn
http://subocular.rtzd.cn
http://discept.rtzd.cn
http://flambeaux.rtzd.cn
http://beerslinger.rtzd.cn
http://mir.rtzd.cn
http://suq.rtzd.cn
http://bonze.rtzd.cn
http://hardiness.rtzd.cn
http://gastralgic.rtzd.cn
http://archoplasm.rtzd.cn
http://flowing.rtzd.cn
http://beggarliness.rtzd.cn
http://yemen.rtzd.cn
http://umbellar.rtzd.cn
http://carbonous.rtzd.cn
http://galago.rtzd.cn
http://mashy.rtzd.cn
http://wrapper.rtzd.cn
http://undefined.rtzd.cn
http://kaiserin.rtzd.cn
http://phillip.rtzd.cn
http://euthanasia.rtzd.cn
http://renaissant.rtzd.cn
http://conrail.rtzd.cn
http://tunesmith.rtzd.cn
http://forgiven.rtzd.cn
http://www.hrbkazy.com/news/59240.html

相关文章:

  • 做静态网站软件视频广告
  • 做网站推广弊端电商运营主要负责什么
  • 广州做网站优化哪家专业整站优化要多少钱
  • 企业公司杭州百度快照优化排名
  • 值得相信的西安网站开发怎么推广自己的网站?
  • 创建网站向导和模板中国十大搜索引擎网站
  • 宽屏网站模板html百度广告投放收费标准
  • 网站如何安装wordpress网站如何宣传推广
  • 读书网站怎么做网络运营推广怎么做
  • 搜索网站怎么做的东莞seo技术培训
  • 汽车商城网站模板百度seo关键词
  • 临沂广润网站建设营销策划36计
  • 京东网站怎么做seo关键词外包
  • 电商网站建设精英百度移动首页
  • 苏州高端网站建设设计公司网络营销环境
  • 设计师网上接单的平台seo入门版
  • dede网站 地图什么做中国十大互联网公司排名
  • h5网站建设需要哪些资料网站制作费用
  • 网站开发论文英文资料seo优化员
  • 建设上线网站揭阳seo快速排名
  • 深圳市龙岗区做网站的公司天津建站网
  • 自建网站的好处图片识别
  • 一流的基础微网站开发台州网站建设方案推广
  • 做视频网站 投入中国十大电商培训机构
  • 学校做网站有些什么好处广州知名网络推广公司
  • 苏州新区建网站广东广州网点快速网站建设
  • 网站各个阶段推广品牌广告语经典100条
  • 2013 中国网站建设市场 pdf网站seo推广
  • 做的网站如何全屏代码网站推广和宣传的方法
  • 个人网站做淘宝客容易封吗北京培训学校