做过测绘报告的兄弟们都知道,辛辛苦苦把数据整理完了,最后交上去却往往只有几行干巴巴的表格和几张截图。领导看的时候眉头紧锁,翻两页就放一边了。其实不是咱们数据不行,而是呈现方式太“素”了,完全看不出项目的专业性。
以前我也总踩这个坑,后来开始玩Python的可视化库,才发现原来测绘数据也能做得像互联网大厂的数据看板一样酷炫。特别是动态图表,鼠标一上去还能交互,数据点能高亮,图层能切换,这种交互感一下子就把报告的档次提上去了。
今天我把自己压箱底的5个模板分享出来,都是直接能套用的,只要把你的数据格式对齐,复制粘贴改改参数,立马就能用。领导看了都得眼前一亮。
模板1:变形监测动态趋势图
适用场景: 沉降观测、位移监测、时间序列分析
这个模板最适合用来展示监测点的变化趋势。以前我们都是用Excel画折线图,死板得很。这个动态图支持缩放、拖动,还能把多个监测点叠在一起对比,领导想看哪个点,鼠标放上去就高亮显示,简直不要太直观。
from pyecharts.charts import Linefrom pyecharts import options as opts# 假设有监测数据:日期和累计沉降量dates = ['2024-01', '2024-02', '2024-03', '2024-04', '2024-05']settlement_data = [2.3, 4.5, 6.8, 9.2, 12.1]# 创建动态折线图line = Line(init_opts=opts.InitOpts(width="900px", height="500px"))line.add_xaxis(dates)line.add_yaxis(series_name="累计沉降",y_axis=settlement_data,is_smooth=True,markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值")]))line.set_global_opts(title_opts=opts.TitleOpts(title="监测点沉降趋势分析"),yaxis_opts=opts.AxisOpts(name="沉降量"),datazoom_opts=opts.DataZoomOpts(is_show=True),tooltip_opts=opts.TooltipOpts(trigger="axis"))line.render('变形监测_趋势图.html')print("图表已生成!打开HTML文件查看动态效果")
运行脚本会在同级目录下生成一个HTML的文件,点开文件就可以看一如下图:
提示: datazoom_opts这个参数是精髓,加上它就能实现时间轴的缩放查看,特别适合长周期监测数据。
模板2:宗地分类动态饼图
适用场景: 土地利用分类、地类统计、权属分析
做地籍调查或者土地利用现状分析时,经常要统计各类土地的面积占比。静态饼图看多了容易审美疲劳,这个动态饼图支持鼠标悬停显示百分比,还能点击图例隐藏某类数据,交互感满分。
from pyecharts.charts import Piefrom pyecharts import options as opts# 假设宗地分类数据land_types = ['耕地', '林地', '建设用地', '水域', '未利用地']areas = [45.2, 28.6, 15.3, 8.1, 2.8]pie = Pie(init_opts=opts.InitOpts(width="800px", height="600px"))pie.add( series_name="土地类型", data_pair=[(t, a) for t, a in zip(land_types, areas)], radius=["30%", "70%"], # 环形图,更现代 label_opts=opts.LabelOpts(formatter="{b}: {d}%"))pie.set_global_opts( title_opts=opts.TitleOpts(title="测区土地利用现状分类"), legend_opts=opts.LegendOpts(orient="vertical", pos_left="80%"))pie.render('土地利用_分类图.html')
老手提示: radius参数设成环形图(两个百分比)比实心圆看着高级多了,颜色会自动配,不用你操心配色问题。
模板3:测区进度动态地图
适用场景: 项目进度汇报、分区作业管理、测区分布展示
这个模板简直是汇报神器。把测区的范围和完成进度在地图上展示出来,哪个区域完成了、哪个还在作业,一目了然。特别是做大面积测绘项目时,这种可视化效果比文字描述强一百倍。
from pyecharts.charts import Map, Geofrom pyecharts import options as optsfrom pyecharts.globals import ChartType# 假设分区数据:区域名和完成百分比districts = ['武昌区', '洪山区', '江岸区', '江汉区', '硚口区']progress = [95, 78, 88, 100, 62]map_chart = Map(init_opts=opts.InitOpts(width="1000px", height="600px"))map_chart.add("完成进度", [list(z) for z in zip(districts, progress)],"武汉", # 地图范围 is_map_symbol_show=False)map_chart.set_global_opts( title_opts=opts.TitleOpts(title="测区作业进度分布"), visualmap_opts=opts.VisualMapOpts( min_=0, max_=100, is_piecewise=True, pieces=[ {"min": 90, "label": "已完成", "color": "#2ecc71"}, {"min": 60, "max": 90, "label": "进行中", "color": "#f39c12"}, {"max": 60, "label": "未完成", "color": "#e74c3c"} ] ))map_chart.render('测区进度_分布图.html')
提示: visualmap_opts是关键,自定义颜色分段让地图直观显示进度状态,领导一眼就能看出哪些区域要加派人手。
模板4:高程分布热力图
适用场景: 地形分析、DEM展示、高程可视化
做地形图或者DEM分析时,静态等高线图太专业,外行看不懂。这个热力图模板直接把高程分布用颜色梯度展示,山峰河谷一目了然,特别适合放进技术报告里。
from pyecharts.charts import HeatMapfrom pyecharts import options as optsimport random# 模拟高程网格数据(实际应用中读取DEM数据)x_range = [str(i) for i in range(10)]y_range = [str(i) for i in range(10)]data = [[i, j, random.randint(100, 500)] for i in range(10) for j in range(10)]heatmap = HeatMap(init_opts=opts.InitOpts(width="800px", height="600px"))heatmap.add_xaxis(x_range)heatmap.add_yaxis("高程", y_range, data, label_opts=opts.LabelOpts(is_show=False))heatmap.set_global_opts( title_opts=opts.TitleOpts(title="测区高程分布热力图"), visualmap_opts=opts.VisualMapOpts( min_=100, max_=500, orient="horizontal", pos_bottom="10%" ))heatmap.render('高程分布_热力图.html')
提示: 实际项目中,可以把DEM栅格数据采样后导进去,颜色梯度会自动映射高程值,展示效果比ArcGIS导出的静态图生动多了。
模板5:质量检查动态仪表盘
适用场景: 质量汇报、精度统计、项目指标展示
这个模板是我最常用的。做项目验收或者质量检查报告时,把关键指标(点位精度、高程精度、粗差率等)用仪表盘形式展示,动态效果加上颜色预警(绿色合格、黄色预警、红色超限),领导一看就知道项目质量靠不靠谱。
from pyecharts.charts import Gauge, Pagefrom pyecharts import options as optspage = Page(layout=Page.SimplePageLayout)# 点位精度仪表盘gauge1 = Gauge()gauge1.add("点位中误差", [("", 4.5)], # 假设精度4.5cm split_number=5, axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts( color=[(0.3, "#67e0e3"), (0.7, "#37a2da"), (1, "#fd666d")], width=30 ) ), detail_label_opts=opts.LabelOpts(formatter="{value} cm"))gauge1.set_global_opts( title_opts=opts.TitleOpts(title="平面点位精度", pos_left="center"), legend_opts=opts.LegendOpts(is_show=False))# 高程精度仪表盘gauge2 = Gauge()gauge2.add("高程中误差", [("", 2.8)], split_number=5, axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts( color=[(0.3, "#67e0e3"), (0.7, "#37a2da"), (1, "#fd666d")], width=30 ) ), detail_label_opts=opts.LabelOpts(formatter="{value} cm"))gauge2.set_global_opts( title_opts=opts.TitleOpts(title="高程精度", pos_left="center"), legend_opts=opts.LegendOpts(is_show=False))page.add(gauge1, gauge2)page.render('质量检查_仪表盘.html')
提示: 可以在一个HTML页面里放多个仪表盘,组成完整的数据看板。color参数里定义的分段颜色就是预警线,根据项目限差调整阈值就行。
使用建议与注意事项
数据格式要对齐 Pyecharts对数据格式要求比较严格,特别是地图类图表,区域名称要和地图库里的完全一致。建议先用小数据集测试,通了再上大批量数据。
别贪多 一个报告里放2-3个动态图表就够了,太多反而喧宾夺主。重点是突出关键数据,不是炫技。
导出技巧 生成的HTML文件可以直接在浏览器打开,汇报时用浏览器全屏展示效果最佳。如果要嵌入Word报告,可以截图或者录屏。有些单位内网环境不支持HTML,那就只能截图了,但动态效果会打折。
颜色别乱改 Pyecharts自带的配色方案已经很专业了,除非有特殊需求(比如甲方指定色系),否则直接用默认的就行,省心又好看。
写在最后
这5个模板都是我实际项目中验证过的,能直接落地。以前做报告总被说“太技术化、看不懂”,加上这些可视化图表后,领导反馈明显好了很多。数据还是那些数据,但呈现方式变了,专业度和可信度立马不一样。
把模板应用到你的报告中,记得截取可视化片段以避免信息过载。如果你在实际应用中遇到了数据格式对不上的问题,或者想定制特定场景的图表,欢迎在评论区留言,咱们一起探讨怎么把测绘报告做得更漂亮。
收藏这几个模板,下次汇报直接复制改数据,让领导对你刮目相看!
#数据可视化 #测绘报告 #动态图表 #Pyecharts #模板
以往文章合集: