基于python数据分析学习02--pyecharts实现Excel旅游路线数据可视化(附渐变色流线图)

 

本文将通过完整代码示例讲解如何用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 效果提升点

  1. 颜色方案:深色背景+渐变流线

  2. 交互体验:高亮状态颜色变化

  3. 视觉优化

    • 隐藏冗余标签

    • 调整线条透明度避免重叠

    • 添加曲线效果增强动感


五、注意事项

  1. 确保Excel数据格式为两列(起点、终点)

  2. 文件路径需替换为实际位置

  3. 渐变色参数支持自定义RGB/HEX值

  4. 调整opacity参数可改善线条重叠问题


效果图建议:运行代码后生成的HTML文件可直接用浏览器打开查看交互效果,推荐使用Chrome浏览器获得最佳渲染效果。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值