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

在推文使用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()

最终可视化结果如下:

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值