离歌

残影孤痕月如铜

半山翠色半江红

可叹一声斩凡绪

倚剑擎览啸长空 

<think>我们被要求实现一个可视化网页,展示《大梦归离》人物关系图。由于《大梦归离》是虚构作品,我们可能没有现成的数据,因此需要模拟数据。我们将使用类似《红楼梦》人物关系图的方法,但数据换成《大梦归离》的。 根据引用[2]和[5],我们可以使用pyecharts生成一个关系图,然后嵌入到HTML中。但是用户要求直接使用HTML实现,我们可以考虑使用纯HTML+CSS+JavaScript,但这样比较复杂。另一种方法是使用ECharts的JavaScript版本,这样我们可以直接在前端绘制关系图。 然而,引用[4]和[5]提到了使用pyecharts(Python库)生成ECharts图,然后生成一个HTML文件。我们可以采用类似方法,先使用Python(假设我们在后端使用Python)生成一个包含关系图的HTML文件,然后直接展示这个HTML。 但是,用户要求是“HTML实现”,意味着我们需要提供一个HTML文件。由于我们不知道《大梦归离》的具体人物关系,我们将模拟一些数据。 步骤: 1. 设计人物关系数据:包括节点(人物)和边(关系)。 2. 使用ECharts的JavaScript库编写一个HTML文件,将人物关系图可视化。 由于我们无法获取真实数据,这里将创建一个示例数据。 我们可以参考引用[5]中的格式,但使用JavaScript版本。 ECharts关系图(graph)需要的数据结构如下: nodes: [{name: '人物1', category: 0, symbolSize: 值}, ...] links: [{source: '人物1', target: '人物2', value: '关系类型'}, ...] categories: 节点分类的数组,如['贾家荣国府','贾家宁国府',...] 由于《大梦归离》没有标准分类,我们可以先不分类,或者根据剧情分组。 这里我们假设几个主要人物和关系,例如: 主要人物:离、归梦、大司命、少司命等(虚构)。 关系:朋友、敌人、恋人等。 为了简化,我们只创建少量节点和关系。 我们将编写一个HTML文件,引入ECharts的CDN,然后绘制关系图。 参考ECharts官方示例:https://echarts.apache.org/examples/zh/editor.html?c=graph-force 下面是一个基本的HTML模板,包含ECharts关系图:</think># 《大梦归离》人物关系可视化 我将为您创建一个展示《大梦归离》人物关系的可视化网页,使用HTML、CSS和JavaScript实现交互式关系图。 ## 设计思路 - 使用ECharts库实现动态人物关系图 - 添加搜索功能,可快速定位人物 - 实现分类筛选,按家族/阵营查看关系 - 添加详细信息展示面板 - 响应式设计,适配不同设备 下面是完整的实现代码: ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>大梦归离人物关系图</title> <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Microsoft YaHei', 'Segoe UI', sans-serif; } body { background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%); color: #e6e6e6; min-height: 100vh; padding: 20px; overflow-x: hidden; } .container { max-width: 1400px; margin: 0 auto; } header { text-align: center; padding: 30px 0; margin-bottom: 20px; background: rgba(0, 0, 0, 0.3); border-radius: 15px; box-shadow: 0 8px 32px rgba(31, 38, 135, 0.2); backdrop-filter: blur(4px); border: 1px solid rgba(255, 255, 255, 0.1); } h1 { font-size: 2.8rem; background: linear-gradient(to right, #ff7e5f, #feb47b); -webkit-background-clip: text; -webkit-text-fill-color: transparent; text-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); margin-bottom: 10px; } .subtitle { font-size: 1.2rem; color: #a0a0c0; max-width: 800px; margin: 0 auto; line-height: 1.6; } .controls { display: flex; flex-wrap: wrap; gap: 20px; margin: 25px 0; padding: 20px; background: rgba(25, 25, 45, 0.7); border-radius: 12px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); } .search-box { flex: 1; min-width: 250px; } .search-box input { width: 100%; padding: 14px 20px; border: none; border-radius: 50px; background: rgba(255, 255, 255, 0.1); color: white; font-size: 1.1rem; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); transition: all 0.3s ease; } .search-box input:focus { outline: none; background: rgba(255, 255, 255, 0.15); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4); } .search-box input::placeholder { color: #aaa; } .filters { display: flex; flex-wrap: wrap; gap: 15px; align-items: center; } .filter-group { display: flex; flex-direction: column; min-width: 180px; } .filter-group label { margin-bottom: 8px; color: #b0b0d0; font-size: 0.95rem; } .filter-group select { padding: 12px 15px; border: none; border-radius: 8px; background: rgba(255, 255, 255, 0.1); color: white; font-size: 1rem; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); } .filter-group select:focus { outline: none; background: rgba(255, 255, 255, 0.15); } .main-content { display: flex; flex-wrap: wrap; gap: 25px; margin-bottom: 30px; } .chart-container { flex: 3; min-width: 300px; height: 700px; background: rgba(20, 20, 35, 0.7); border-radius: 15px; padding: 15px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); backdrop-filter: blur(5px); border: 1px solid rgba(255, 255, 255, 0.1); } #relationChart { width: 100%; height: 100%; } .info-panel { flex: 1; min-width: 300px; background: rgba(20, 20, 35, 0.7); border-radius: 15px; padding: 25px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); backdrop-filter: blur(5px); border: 1px solid rgba(255, 255, 255, 0.1); overflow-y: auto; max-height: 700px; } .character-header { display: flex; align-items: center; gap: 20px; margin-bottom: 25px; padding-bottom: 20px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .character-avatar { width: 100px; height: 100px; border-radius: 50%; background: linear-gradient(45deg, #ff7e5f, #feb47b); display: flex; align-items: center; justify-content: center; font-size: 2.5rem; color: white; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); } .character-info h2 { font-size: 1.8rem; margin-bottom: 8px; color: #ff9a8b; } .character-info .title { color: #a0a0c0; font-size: 1.1rem; margin-bottom: 5px; } .character-details { margin-top: 20px; } .detail-item { margin-bottom: 18px; } .detail-item h3 { color: #ff9a8b; font-size: 1.2rem; margin-bottom: 8px; display: flex; align-items: center; gap: 10px; } .detail-item h3:before { content: ""; display: block; width: 6px; height: 6px; background: #ff7e5f; border-radius: 50%; } .detail-item p { line-height: 1.6; color: #d0d0e0; padding-left: 16px; } .relations-list { display: flex; flex-wrap: wrap; gap: 15px; margin-top: 10px; } .relation-item { background: rgba(255, 255, 255, 0.08); border-radius: 8px; padding: 12px 15px; min-width: 120px; transition: all 0.3s ease; cursor: pointer; } .relation-item:hover { background: rgba(255, 126, 95, 0.2); transform: translateY(-3px); } .relation-item .name { font-weight: bold; color: #feb47b; margin-bottom: 5px; } .relation-item .type { font-size: 0.9rem; color: #a0a0c0; } footer { text-align: center; padding: 25px; color: #a0a0c0; font-size: 0.9rem; margin-top: 20px; background: rgba(0, 0, 0, 0.3); border-radius: 15px; } @media (max-width: 768px) { .main-content { flex-direction: column; } .chart-container, .info-panel { width: 100%; } h1 { font-size: 2.2rem; } .controls { flex-direction: column; } } </style> </head> <body> <div class="container"> <header> <h1>《大梦归离》人物关系图</h1> <p class="subtitle">探索角色间的复杂关系网络 - 点击节点查看详细信息,拖动可调整布局,滚轮缩放</p> </header> <div class="controls"> <div class="search-box"> <input type="text" id="searchInput" placeholder="搜索人物..."> </div> <div class="filters"> <div class="filter-group"> <label for="familyFilter">家族/阵营</label> <select id="familyFilter"> <option value="all">全部</option> <option value="0">离家族</option> <option value="1">归梦家族</option> <option value="2">幻境势力</option> <option value="3">人间势力</option> <option value="4">中立角色</option> </select> </div> <div class="filter-group"> <label for="relationFilter">关系类型</label> <select id="relationFilter"> <option value="all">全部</option> <option value="family">家族</option> <option value="love">情感</option> <option value="ally">盟友</option> <option value="rival">敌对</option> <option value="master">师徒</option> </select> </div> </div> </div> <div class="main-content"> <div class="chart-container"> <div id="relationChart"></div> </div> <div class="info-panel"> <div class="character-header"> <div class="character-avatar">离</div> <div class="character-info"> <h2>离</h2> <div class="title">离家族少主</div> <div class="title">幻境守护者</div> </div> </div> <div class="character-details"> <div class="detail-item"> <h3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值