前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >可视化绘制| Python-ridge_map山峦地图绘制

可视化绘制| Python-ridge_map山峦地图绘制

作者头像
DataCharm
发布2021-02-22 11:53:39
3930
发布2021-02-22 11:53:39
举报

在推文使用R快速绘制“山峦图”(工具分享 | linemap-快速绘制山峦地图的R可视化包介绍),有小伙伴就问Python 能不能绘制类似的地图效果?答案是:当然啦!本期推文我们就使用Python-ridge_map包绘制山峦效果的地图可视化作品。主要内容如下:

  • Python-ridge_map包简介
  • Python-ridge_map包 实例应用

Python-ridge_map包简介

ridge_map包作为Python第三方包就是为绘制“山峦”地图而生,其官网为:https://github.com/ColCarroll/ridge_map,官方提供的例子如下:(由于官网提供的例子都需要在线下载数据,但由于有的小伙伴无法科学上网,这里只提供效果图)

「样例1」

from ridge_map import RidgeMap

RidgeMap().plot_map()

Sample_01

「样例2」

from ridge_map import FontManager

font = FontManager('https://github.com/google/fonts/blob/master/ofl/uncialantiqua/UncialAntiqua-Regular.ttf?raw=True')
rm = RidgeMap((-156.250305,18.890695,-154.714966,20.275080), font=font.prop)

values = rm.get_elevation_data(num_lines=100)
rm.plot_map(values=rm.preprocess(values=values, lake_flatness=2, water_ntile=10, vertical_ratio=240),
            label="Hawai'i",
            label_y=0.85,
            label_x=0.7,
            label_size=60,
            linewidth=2,
            line_color=plt.get_cmap('ocean'),
            kind='elevation')

(注:更多例子大家可参照官网,其数据都是在线获取,好多无法科学上网的小伙伴则很难进行练习)

Python-ridge_map包 实例应用

鉴于网络问题,这一部分我们提供实例数据进行可视化教程绘制,使用的数据为png格式的DEM数据。这里需要使用cv2 包进行图片读取。

在绘制之前,我们需要对图片数据进行“转置”操作:

import cv2
import numpy as np

img_file = r"G:\middle_earth.png"

img = cv2.imread(img_file, 0)
height = img.shape[0]
line_interval = int(height / 150)
image_values = []
for i in reversed(range(img.shape[0])):
    if (i % line_interval) == 0:
        row_values = []
        for j in range(img.shape[1]):
            if (j % 1) == 0:
                row_values.append(img[i][j])
        image_values.append(row_values)
values_pro = np.array(image_values)

数据结果如下:

数据处理后

我们对比下数据处理之前的(注意红色框中内容):

数据处理后

接下来我们直接进行可视化绘制,这里直接给出绘图代码:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(9,6), dpi=100,facecolor="#EFEFE1")
ax.set_facecolor("#EFEFE1")

rm = RidgeMap()
values = rm.preprocess(values=values_pro,
                       water_ntile=20,
                       lake_flatness=2,
                       vertical_ratio=30)
# 可视化绘制
rm.plot_map(values=values,
            label='',
            label_y=0.2,
            label_x=0.2,
            label_size=30,
            linewidth=.6,
            line_color="black",
            kind='elevation',
            background_color="#EFEFE1",
            ax=ax)

ax.text(.5,1.1,"Map Charts in Python Exercise 02:Ridge_map Exercise",transform = ax.transAxes,ha='center', 
        va='center',fontweight="bold",fontsize=15)
ax.text(.5,1.03, "processed map charts with Ridge_map",
        transform = ax.transAxes,ha='center', va='center',fontsize = 10,color='black')
ax.text(.83,.0,'\nVisualization by DataCharm',transform = ax.transAxes,
        ha='center', va='center',fontsize = 8,color='black')
plt.show()

最终可视化结果如下:

练习数据获取

关注公众号 DataCharm ,后天回复 山峦地图 即可获取本文练习png数据哦!

总结

这篇推文继续介绍了“山峦”地图的绘制,只不过使用的是Python语言绘制,喜欢的小伙伴可以尝试下。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python-ridge_map包简介
  • Python-ridge_map包 实例应用
  • 练习数据获取
  • 总结
相关产品与服务
灰盒安全测试
腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档