本文将通过完整代码示例讲解如何用Pyecharts从Excel读取数据生成旅游路线流线图,并通过配置项实现高级美化效果。代码分两个版本对比呈现。
一、数据准备与提取模块
1.1 Excel数据读取
#导入生成地理图的模块
from pyecharts.charts import Geo
import openpyxl
from pyecharts import options as opts
#配置JsCode模块用于完成渐变色操作,此处使用的是javascript的代码改变
from pyecharts.commons.utils import JsCode
#对excel数据的提取和处理
exdata=openpyxl.load_workbook(r"D:\YBR\JJ\JJ\travel_routes.xlsx")
#选取工作薄,传入名称
sheet=exdata["travel_route"]
#使用max_row属性来获取最大行数
maxrow=sheet.max_row
datalist=[]
#因为excel表中地点数据是从第二行开始的
for row in range(2,maxrow+1):
#获取当前行数据
data1=sheet[row]
#储存数据,记住单元格数据一定要加.value
datalist.append((data1[0].value,data1[1].value))
关键点说明:
-
使用
openpyxl
库处理Excel文件 -
max_row
获取有效数据行数 -
数据存储为元组列表
(起点, 终点)
格式
二、基础地图生成模块
2.1 基础配置
# 创建Geo对象
geo = Geo()
# 设置中国地图
geo.add_schema(maptype='china')
# 添加流线数据
geo.add(
series_name="",
data_pair=datalist,
type_="lines"
)
# 输出HTML文件
geo.render("D:\\可视化文件\\p3.html")
参数解析:
-
maptype='china'
:限定中国地图范围 -
type_="lines"
:指定流线图类型 -
data_pair
:接收准备好的路线数据列表
初步效果展示:
三、高级美化配置模块
3.1 初始化配置
from pyecharts.commons.utils import JsCode
# 渐变色定义(JavaScript语法)
line_color_js = """
new echarts.graphic.LinearGradient(
0,0,0,1,
[{offset: 0,color: '#42becc'}, {offset: 1,color: '#f5652c'}])
"""
# 设置深色背景
geo = Geo(init_opts=opts.InitOpts(bg_color="#475260"))
3.2 地图样式配置
# 将地图类型设置为"china",修改图形的底色和图形描边颜色
#emphasis_itemstyle_opts是修改高亮状态下地图的配色,这些参数都可以利用deepseak帮我们完成,我们只需要知道这些参数的存在就行
geo.add_schema(maptype='china',itemstyle_opts=opts.ItemStyleOpts(
color="#2d3945",
border_color="#58667b"
),emphasis_itemstyle_opts=opts.ItemStyleOpts(color="#2a338d"))
3.3 流线特效配置
#添加属性,注意series_name、data_pair参数必选,data_pair是列表类型,是[(起,终),(),()...]
#type_参数是设置图像显示模式,默认是scatter散点,此处我们使用流线
#使用label_opts参数可以用来隐藏标签
#我们可以通过symbol\linestyle_opts等参数来改变字体\线的样式与大小
geo.add(
series_name="旅游地点路线图",data_pair=datalist,type_="lines",
label_opts=opts.LabelOpts(is_show=False),
symbol='circle',symbol_size=6,
#修改线条的样式
linestyle_opts=opts.LineStyleOpts(
opacity=0.1,curve=0.1,color=JsCode(line_color_js)
)
)
四、完整代码与效果对比
4.1 最终代码
#导入生成地理图的模块
from pyecharts.charts import Geo
import openpyxl
from pyecharts import options as opts
#配置JsCode模块用于完成渐变色操作,此处使用的是javascript的代码改变
from pyecharts.commons.utils import JsCode
#对excel数据的提取和处理
exdata=openpyxl.load_workbook(r"D:\YBR\JJ\JJ\travel_routes.xlsx")
#选取工作薄,传入名称
sheet=exdata["travel_route"]
#使用max_row属性来获取最大行数
maxrow=sheet.max_row
datalist=[]
#因为excel表中地点数据是从第二行开始的
for row in range(2,maxrow+1):
#获取当前行数据
data1=sheet[row]
#储存数据,记住单元格数据一定要加.value
datalist.append((data1[0].value,data1[1].value))
# 定义渐变色,并赋值给变量line_color_js
line_color_js = """
new echarts.graphic.LinearGradient(
0,0,0,1,
[{offset: 0,color: '#42becc'}, {offset: 1,color: '#f5652c'}])
"""
#创建对象,并调整背景颜色
geo=Geo(init_opts=opts.InitOpts(bg_color="#475260"))
# 将地图类型设置为"china",修改图形的底色和图形描边颜色
#emphasis_itemstyle_opts是修改高亮状态下地图的配色,这些参数都可以利用deepseak帮我们完成,我们只需要知道这些参数的存在就行
geo.add_schema(maptype='china',itemstyle_opts=opts.ItemStyleOpts(
color="#2d3945",
border_color="#58667b"
),emphasis_itemstyle_opts=opts.ItemStyleOpts(color="#2a338d"))
#添加属性,注意series_name、data_pair参数必选,data_pair是列表类型,是[(起,终),(),()...]
#type_参数是设置图像显示模式,默认是scatter散点,此处我们使用流线
#使用label_opts参数可以用来隐藏标签
#我们可以通过symbol\linestyle_opts等参数来改变字体\线的样式与大小
geo.add(
series_name="旅游地点路线图",data_pair=datalist,type_="lines",
label_opts=opts.LabelOpts(is_show=False),
symbol='circle',symbol_size=6,
#修改线条的样式
linestyle_opts=opts.LineStyleOpts(
opacity=0.1,curve=0.1,color=JsCode(line_color_js)
)
)
#保存文件
geo.render("D:\\可视化文件\\p3.html")
4.2 效果提升点
-
颜色方案:深色背景+渐变流线
-
交互体验:高亮状态颜色变化
-
视觉优化:
-
隐藏冗余标签
-
调整线条透明度避免重叠
-
添加曲线效果增强动感
-
五、注意事项
-
确保Excel数据格式为两列(起点、终点)
-
文件路径需替换为实际位置
-
渐变色参数支持自定义RGB/HEX值
-
调整
opacity
参数可改善线条重叠问题
效果图建议:运行代码后生成的HTML文件可直接用浏览器打开查看交互效果,推荐使用Chrome浏览器获得最佳渲染效果。