网上做效果图网站有哪些,网站开发需要几个人,深圳投资推广署,新手制作网页的方法目录
项目解析
① 整体结构#xff1a;导入模块
② 数据准备#xff1a;结构化你的信息
③ 图表函数详解#xff1a;封装每一个图表
④ 页面布局与生成#xff1a;组合与渲染
Pyecharts 核心库与 API 讲解
如何借鉴此项目进行二次创作#xff1f;
总结与更多资源 …目录
项目解析
① 整体结构导入模块
② 数据准备结构化你的信息
③ 图表函数详解封装每一个图表
④ 页面布局与生成组合与渲染
Pyecharts 核心库与 API 讲解
如何借鉴此项目进行二次创作
总结与更多资源
开始
地理位置
行政区划
人口数据
经济数据
自然资源
代码构建
导包
数据准备
可视化效果
图表绘制函数
生成网页
完整代码 前言 Pyecharts 是基于 Python 的开源可视化库可生成交互式图表。数据可视化通过图表等形式呈现数据二者结合能将复杂数据转化为直观图形广泛应用于商业分析如销售趋势展示、学术研究如数据模型可视化、政务决策如人口分布呈现等场景助力高效信息传递与决策支持。 项目解析 ① 整体结构导入模块 # 导入图表类如 Map, Bar, Geo 等
from pyecharts.charts import Map, Bar, Geo, Gauge, WordCloud, Page
# 导入全局配置和系列配置项这是自定义样式的关键
from pyecharts import options as opts
# 导入一些辅助常量如图表类型、标记形状等
from pyecharts.globals import ChartType, SymbolTypepyecharts.charts: 存放所有图表类型如 Bar()柱状图、Line()折线图等 pyecharts.options (通常简写为 opts): 这是 pyecharts 的精髓。它包含了所有用于定制图表样式的“配置项类”如图表标题 (opts.TitleOpts)、坐标轴 (opts.AxisOpts)、提示框 (opts.TooltipOpts) 等 pyecharts.globals: 提供一些全局的枚举值比如图表类型、主题等。 ② 数据准备结构化你的信息 在代码中我们先把所有需要展示的数据整理成 Python 的基础数据结构列表、元组。 # 例如人口数据是 [(key, value), (key, value), ...] 的格式
districts_population [(龙湖区, 630749), (金平区, 777024), ...
]
# 经济数据是两个对应的列表
gdp_income_data_x [GDP(亿元), 城镇人均收入(元), ...]
gdp_income_data_y [3167.97, 39289, ...]这样做的好处是让数据和绘图逻辑分离代码更清晰以后更新数据也只需要修改这一部分。 ③ 图表函数详解封装每一个图表 为每一个图表都创建了一个独立的函数如 create_map(), create_economy_bar()。这样做的好处是模块化易于管理和复用。 以经济概览的柱状图为例 def create_economy_bar() - Bar:c (Bar() # 1. 创建一个柱状图实例.add_xaxis(gdp_income_data_x) # 2. 添加 X 轴数据.add_yaxis(数值, gdp_income_data_y) # 3. 添加 Y 轴数据并命名该系列为“数值”.set_global_opts( # 4. 设置全局配置项title_optsopts.TitleOpts(title图3 - 2024年汕头经济概览), # 设置标题yaxis_optsopts.AxisOpts(type_log, name数值 (Y轴为对数轴)) # 设置Y轴).set_series_opts( # 5. 设置系列配置项label_optsopts.LabelOpts(is_showTrue, positiontop) # 在柱顶显示数值))return c.add_xaxis() 和 .add_yaxis()是所有图表用来添加数据的核心方法 .set_global_opts()用于设置图表级别的选项如标题、图例、工具箱、视觉映射等。这些设置对整个图表生效 .set_series_opts()用于设置数据系列级别的选项比如柱子的颜色、线上标记的样式、标签的格式等。它只对用 .add_yaxis() 添加的那个数据系列生效。 ④ 页面布局与生成组合与渲染 Page 类是一个强大的布局工具。 def main():# 使用可拖拽布局page Page(layoutPage.DraggablePageLayout, page_title期末大作业 - 我的家乡汕头)# 将之前创建的所有图表对象加入页面page.add(create_map(),create_geo(),...)# 生成最终的 HTML 文件page.render(my_hometown_shantou_visualization.html)Page.DraggablePageLayout: 让生成的 HTML 页面中的所有图表都可以用鼠标自由拖动和缩放非常适合制作可交互的 Dashboard page.render(): 这是最后一步将所有配置好的图表对象渲染成一个独立的网页文件。 Pyecharts 核心库与 API 讲解 核心设计理念“配置项皆为对象” 理解 pyecharts 的关键在于理解它的配置方式。你看到的每一个 opts.XXXOpts() 都是在创建一个“配置对象”然后把它传递给 .set_global_opts() 或 .set_series_opts()。 例如想改标题就创建一个 TitleOpts 对象想改坐标轴就创建一个 AxisOpts 对象。这种方式非常清晰且灵活。 常用图表与配置项 (opts) 链式调用 (Chain-style Calling) Bar().add_xaxis(...).add_yaxis(...).set_global_opts(...)这是 pyecharts 的标志性写法。每个方法执行后都会返回图表对象本身所以可以继续在后面调用下一个方法让代码写起来非常流畅、一气呵成。 如何借鉴此项目进行二次创作 假设要为家乡 “西安” 制作一个类似的可视化项目。 第一步明确你的主题与数据 首先收集西安的相关数据。 行政区划与人口碑林区、新城区等各区的人口。 经济数据GDP、人均收入。 旅游数据大雁塔、兵马俑的年游客量。 历史文化十三朝古都、丝绸之路起点等关键词。 第二步选择并修改图表函数 可以直接复用项目中的函数只需修改数据和标题。 例将汕头经济图改为西安旅游图 复制函数复制 create_economy_bar() 函数并重命名为 create_xian_tourism_bar()。 准备新数据 xian_tourism_x [兵马俑(万人次), 大雁塔(万人次), 城墙(万人次)]
xian_tourism_y [1200, 800, 650] # 假设的数据修改函数内部 def create_xian_tourism_bar() - Bar:c (Bar().add_xaxis(xian_tourism_x) # -- 使用西安的数据.add_yaxis(年游客量, xian_tourism_y) # -- 使用西安的数据和系列名.set_global_opts(title_optsopts.TitleOpts(title西安主要景点年游客量对比), # -- 修改标题yaxis_optsopts.AxisOpts(name万人次) # -- 修改Y轴单位).set_series_opts(label_optsopts.LabelOpts(is_showTrue, positiontop)))return c第三步组合可视化页面 在 main 函数中调用你新创建的函数来替换或增加图表。 def main():page Page(layoutPage.DraggablePageLayout, page_title我的家乡 - 西安)# 你可以保留地图但需要将 maptype 改为 西安# page.add(create_xian_map()) # 需要一个西安地图的函数# 添加你新创建的旅游图page.add(create_xian_tourism_bar())# ...添加其他关于西安的图表 page.render(my_hometown_xian_visualization.html) # 生成新的HTML文件总结与更多资源 通过这个项目你可以看到 pyecharts 的核心逻辑就是准备数据 - 创建图表 - 添加数据 - 配置样式 - 渲染生成。 它最大的优点是 简单易用Python 语法链式调用非常顺手 功能强大支持丰富的图表类型和高度自定义的配置 交互性强生成的 HTML 文件是动态的支持缩放、筛选、提示等交互 当你想要制作更复杂的图表时可以访问 Pyecharts 官方文档和示例库 pyecharts - A Python Echarts Plotting Library built with love. 那里有上百个可以直接运行的例子是学习和寻找灵感的最佳去处。 开始 先进行数据收集 pyecharts绘制地理图表 Geo 地理坐标系组件用于地图的绘制支持在地理坐标系上绘制散点图线集。 Map 函数主要用于地理区域数据的可视化 用于绘制可视化的信息收集 地理位置 经纬度范围汕头市全境处于东经116°14′40″至117°19′35″和北纬23°02′33″至23°38′50″之间。 地理位置位于广东省东部韩江三角洲南端北接潮州西邻揭阳东南濒临南海。 地形地貌汕头市处潮汕平原仅西北部有小片丘陵。全市最高峰是位于南澳岛的大尖山海拔587米。 行政区划 汕头市辖6个区、1个县 | 市辖区 | 面积平方千米 | 区政府驻地 | 龙湖区 | 125 | 大北山路一号 | 金平区 | 114.64 | 金砂路50号 | 濠江区 | 171.03 | 达濠街道府前路 | 潮阳区 | 665.74 | 中华路136号 | 潮南区 | 600.74 | 峡山街道玉峡南路 | 澄海区 | 382.93 | 文冠路党政大楼 | 南澳县 | 112.049 | 后宅镇隆澳大街 人口数据 常住人口2025年初常住人口为557.55万人。 户籍人口2024年初户籍人口为579.3421万人。 人口密度约为2624人/平方公里。 城镇化率2024年末为71.15%。 经济数据 GDP2024年汕头市生产总值为3167.97亿元。 居民收入2024年城镇居民可支配收入为39289元农村居民可支配收入为23891元。 自然资源 海岸线大陆海岸线长217.7公里海岛岸线长167.37公里有大小岛屿82个。 气候属于亚热带季风气候常年气候温和热量丰富阳光充足雨量充沛。 代码构建 导包 # 导入所需的库和模块
from pyecharts import options as opts
from pyecharts.charts import Map, Bar, Geo, Gauge, WordCloud, Page
from pyecharts.globals import ChartType, SymbolType数据准备 # 1. 行政区划 人口数据
districts_population [(龙湖区, 630749), (金平区, 777024), (濠江区, 269471),(潮阳区, 1654276), (潮南区, 1231638), (澄海区, 874444),(南澳县, 64429)
]# 2. 经济数据
gdp_income_data_x [GDP(亿元), 城镇人均收入(元), 农村人均收入(元)]
gdp_income_data_y [3167.97, 39289, 23891]# 3. 人口数据
population_total_x [常住人口(万人), 户籍人口(万人)]
population_total_y [557.55, 579.34]# 4. 城镇化率
urbanization_rate 71.15# 5. 自然资源
natural_resources_x [大陆海岸线(km), 海岛岸线(km), 岛屿数量(个)]
natural_resources_y [217.7, 167.37, 82]# 6. 气候特点
climate_words [(温和湿润, 100), (阳光充足, 95), (雨量充沛, 90),(热量丰富, 85), (亚热带季风气候, 80)
]可视化效果 图表绘制函数 # 1. 汕头人口分布地图
def create_map() - Map:c (Map() # 旧版InitOpts 不放在这里.add(常住人口, districts_population, 汕头, is_map_symbol_showFalse).set_global_opts(title_optsopts.TitleOpts(title图1 - 汕头市各区人口分布图),visualmap_optsopts.VisualMapOpts(is_piecewiseTrue,pieces[{min: 1500000, label: 150万, color: #8A0808},{min: 1000000, max: 1499999, label: 100-150万, color: #B40404},{min: 500000, max: 999999, label: 50-100万, color: #DF0101},{min: 100000, max: 499999, label: 10-50万, color: #F78181},{max: 99999, label: 10万, color: #F5A9A9},],)))return c2. 汕头最高峰示意图 (Geo)
def create_geo() - Geo:c (Geo().add_schema(maptype汕头).add(大尖山 (海拔587m),[(南澳县, 587)],type_ChartType.EFFECT_SCATTER,symbol_size15,).set_series_opts(label_optsopts.LabelOpts(is_showFalse)).set_global_opts(title_optsopts.TitleOpts(title图2 - 汕头市最高峰位置示意),tooltip_optsopts.TooltipOpts(formatter{b}),))return c# 3. 经济概览柱状图
def create_economy_bar() - Bar:c (Bar().add_xaxis(gdp_income_data_x).add_yaxis(数值, gdp_income_data_y, category_gap50%).set_global_opts(title_optsopts.TitleOpts(title图3 - 2024年汕头经济概览),yaxis_optsopts.AxisOpts(type_log, name数值 (Y轴为对数轴)),tooltip_optsopts.TooltipOpts(is_showTrue, triggeraxis, axis_pointer_typecross),).set_series_opts(label_optsopts.LabelOpts(is_showTrue, positiontop)))return c# 4. 城镇化率仪表盘
def create_urbanization_gauge() - Gauge:c (Gauge().add(城镇化率,[( , urbanization_rate)],detail_label_optsopts.LabelOpts(formatter{value}%)).set_global_opts(title_optsopts.TitleOpts(title图4 - 2024年末城镇化率)))return c# 5. 人口结构对比图
def create_population_bar() - Bar:c (Bar().add_xaxis(population_total_x).add_yaxis(人口数量, population_total_y).reversal_axis().set_series_opts(label_optsopts.LabelOpts(positionright)).set_global_opts(title_optsopts.TitleOpts(title图5 - 汕头人口结构)))return c# 6. 自然资源与气候词云
def create_resources_bar() - Bar:c (Bar().add_xaxis(natural_resources_x).add_yaxis(数值, natural_resources_y).set_global_opts(title_optsopts.TitleOpts(title图6 - 汕头自然资源),xaxis_optsopts.AxisOpts(axislabel_optsopts.LabelOpts(rotate15))))return cdef create_climate_wordcloud() - WordCloud:c (WordCloud().add(气候, climate_words, word_size_range[20, 100], shapeSymbolType.DIAMOND).set_global_opts(title_optsopts.TitleOpts(title图7 - 汕头气候特点)))return c生成网页 # --- 页面布局与渲染 ---
def main():# 使用 Page 进行自由布局page Page(layoutPage.DraggablePageLayout, page_title家乡汕头) # 将所有图表添加到页面中page.add(create_map(),create_geo(),create_economy_bar(),create_urbanization_gauge(),create_population_bar(),create_resources_bar(),create_climate_wordcloud(),) # 渲染生成 HTML 文件page.render(my_hometown_shantou_visualization.html) print(可视化报告已生成: my_hometown_shantou_visualization.html)print(请用浏览器打开查看。页面内的图表可以自由拖动和缩放)if __name__ __main__:main()完整代码 # 导入所需的库和模块
from pyecharts import options as opts
from pyecharts.charts import Map, Bar, Geo, Gauge, WordCloud, Page
from pyecharts.globals import ChartType, SymbolType# --- 数据准备 ---# 1. 行政区划 人口数据
districts_population [(龙湖区, 630749), (金平区, 777024), (濠江区, 269471),(潮阳区, 1654276), (潮南区, 1231638), (澄海区, 874444),(南澳县, 64429)
]# 2. 经济数据
gdp_income_data_x [GDP(亿元), 城镇人均收入(元), 农村人均收入(元)]
gdp_income_data_y [3167.97, 39289, 23891]# 3. 人口数据
population_total_x [常住人口(万人), 户籍人口(万人)]
population_total_y [557.55, 579.34]# 4. 城镇化率
urbanization_rate 71.15# 5. 自然资源
natural_resources_x [大陆海岸线(km), 海岛岸线(km), 岛屿数量(个)]
natural_resources_y [217.7, 167.37, 82]# 6. 气候特点
climate_words [(温和湿润, 100), (阳光充足, 95), (雨量充沛, 90),(热量丰富, 85), (亚热带季风气候, 80)
]# --- 图表绘制 (已适配旧版 Pyecharts) ---# 1. 汕头人口分布地图
def create_map() - Map:c (Map() # 旧版InitOpts 不放在这里.add(常住人口, districts_population, 汕头, is_map_symbol_showFalse).set_global_opts(title_optsopts.TitleOpts(title图1 - 汕头市各区人口分布图),visualmap_optsopts.VisualMapOpts(is_piecewiseTrue,pieces[{min: 1500000, label: 150万, color: #8A0808},{min: 1000000, max: 1499999, label: 100-150万, color: #B40404},{min: 500000, max: 999999, label: 50-100万, color: #DF0101},{min: 100000, max: 499999, label: 10-50万, color: #F78181},{max: 99999, label: 10万, color: #F5A9A9},],)))return c# 2. 汕头最高峰示意图 (Geo)
def create_geo() - Geo:c (Geo().add_schema(maptype汕头).add(大尖山 (海拔587m),[(南澳县, 587)],type_ChartType.EFFECT_SCATTER,symbol_size15,).set_series_opts(label_optsopts.LabelOpts(is_showFalse)).set_global_opts(title_optsopts.TitleOpts(title图2 - 汕头市最高峰位置示意),tooltip_optsopts.TooltipOpts(formatter{b}),))return c# 3. 经济概览柱状图
def create_economy_bar() - Bar:c (Bar().add_xaxis(gdp_income_data_x).add_yaxis(数值, gdp_income_data_y, category_gap50%).set_global_opts(title_optsopts.TitleOpts(title图3 - 2024年汕头经济概览),yaxis_optsopts.AxisOpts(type_log, name数值 (Y轴为对数轴)),tooltip_optsopts.TooltipOpts(is_showTrue, triggeraxis, axis_pointer_typecross),).set_series_opts(label_optsopts.LabelOpts(is_showTrue, positiontop)))return c# 4. 城镇化率仪表盘
def create_urbanization_gauge() - Gauge:c (Gauge().add(城镇化率,[( , urbanization_rate)],detail_label_optsopts.LabelOpts(formatter{value}%)).set_global_opts(title_optsopts.TitleOpts(title图4 - 2024年末城镇化率)))return c# 5. 人口结构对比图
def create_population_bar() - Bar:c (Bar().add_xaxis(population_total_x).add_yaxis(人口数量, population_total_y).reversal_axis().set_series_opts(label_optsopts.LabelOpts(positionright)).set_global_opts(title_optsopts.TitleOpts(title图5 - 汕头人口结构)))return c# 6. 自然资源与气候词云
def create_resources_bar() - Bar:c (Bar().add_xaxis(natural_resources_x).add_yaxis(数值, natural_resources_y).set_global_opts(title_optsopts.TitleOpts(title图6 - 汕头自然资源),xaxis_optsopts.AxisOpts(axislabel_optsopts.LabelOpts(rotate15))))return cdef create_climate_wordcloud() - WordCloud:c (WordCloud().add(气候, climate_words, word_size_range[20, 100], shapeSymbolType.DIAMOND).set_global_opts(title_optsopts.TitleOpts(title图7 - 汕头气候特点)))return c# --- 页面布局与渲染 ---
def main():# 使用 Page 进行自由布局page Page(layoutPage.DraggablePageLayout, page_title期末大作业 - 我的家乡汕头)# 将所有图表添加到页面中page.add(create_map(),create_geo(),create_economy_bar(),create_urbanization_gauge(),create_population_bar(),create_resources_bar(),create_climate_wordcloud(),)# 渲染生成 HTML 文件page.render(my_hometown_shantou_visualization.html)print(可视化报告已生成: my_hometown_shantou_visualization.html)print(请用浏览器打开查看。页面内的图表可以自由拖动和缩放)if __name__ __main__:main()