Python海洋专题四之水深地图图像修饰

本文介绍了如何在Python中使用Palettable库修改colormap,包括倒置colormap、添加colorbar以及调整其位置和字体大小,以美化海洋与大气科学图像。作者还展示了如何在matplotlib中实现这些功能,提供了相关代码示例。
摘要由CSDN通过智能技术生成

Python海洋专题四之水深地图图像修饰
海洋与大气科学
上期会修改画布大小、坐标轴字体

没有对数据本身进行修改

本期内容

1:修改colormap!

2:倒置colormap

3:加上colorbar、调整其显示位置和字体大小

1:修改colormap

from palettable.cartocolors.sequential import DarkMint_4
cmap=DarkMint_4.mpl_colormap
注释:

函数包:palettable下面有16大类Colormap,共计1587小类Colormap,合计上万种单颜色可供使用。

palettable.cartocolors.divergingpalettable.cartocolors.qualitativepalettable.cartocolors.sequentialpalettable.cmocean.divergingpalettable.cmocean.sequentialpalettable.colorbrewer.divergingpalettable.colorbrewer.qualitativepalettable.colorbrewer.sequentialpalettable.lightbartlein.divergingpalettable.lightbartlein.sequentialpalettable.scientific.divergingpalettable.scientific.sequential
palettable.matplotlib
palettable.mycarta
palettable.tableaupalettable.wesanderson

palettable的函数包随意展示几张图片

图片

图片

结果展示

图片

2:倒置colormap

有时候觉得colormap反过来好看:

Palettable这个函数包不好整,最终找到一个写了函数的整好了。

函数在全文代码中展示!此处展示效果:

结果展示

图片
图片

上图是直接使用函数包,下图使用函数给倒置过来。

还不错哈。

3:加上colorbar、调整其显示位置

和字体大小

position=fig.add_axes([0.15, 0.05, 0.7, 0.03])#位置[左,下,右,上]
cb=plt.colorbar(im,cax=position,orientation=‘horizontal’)#方向

结果如图

图片
图片

参考文献及其在本文中的作用

1:Palettable (jiffyclub.github.io);

2:在matplotlib中自定义colormap - 知乎 (zhihu.com)

3:调色板界的“扛把子”–palettable - 知乎 (zhihu.com)

1、2和3的作用:更改图像colormap(使用自己函数包和python自带函数包)。

3:关于python:matplotlib中的反向颜色图 | 码农家园 (codenong.com)

其作用:倒置colormap函数包。

4:对matplotlib改变colorbar位置和方向的方法详解_python_脚本之家 (jb51.net)

其作用:设置colorbar显示位置和方向。

5:解决python画图中colorbar设置刻度和标签字体大小_python colorbar自定义刻度-CSDN博客

其作用:设置colorbar的字体大小。

往期推荐

【python海洋专题一】查看数据nc文件的属性并输出属性到txt文件

【python海洋专题二】读取水深nc文件并水深地形图

【python海洋专题三】图像修饰之画布和坐标轴

全文代码

# -*- coding: utf-8 -*-
# %%
# Importing related function packages
import pandas as pd
# import os
# from PIL import Image

import matplotlib.pyplot as plt  # https://matplotlib.org/
import numpy as np
from netCDF4 import Dataset
import matplotlib as mpl
# import palettes
from palettable.cartocolors.sequential import DarkMint_7
from pylab import *

def reverse_colourmap(cmap, name='my_cmap_r'):
    reverse = []
    k = []

    for key in cmap._segmentdata:
        k.append(key)
        channel = cmap._segmentdata[key]
        data = []

        for t in channel:
            data.append((1 - t[0], t[2], t[1]))
        reverse.append(sorted(data))

    LinearL = dict(zip(k, reverse))
    my_cmap_r = mpl.colors.LinearSegmentedColormap(name, LinearL)
    return my_cmap_r


# read data
a = Dataset('D:\pycharm_work\data\scs_etopo.nc')
print(a)
lon = a.variables['lon'][:]
lat = a.variables['lat'][:]
ele = a.variables['elevation'][:]
# plot figure
# %% 图一
fig = plt.figure(dpi=300, figsize=(2, 2), facecolor='w', edgecolor='blue')
mngr = plt.get_current_fig_manager()  # 获取当前figure manager
mngr.window.wm_geometry("+58+51")  # 调整窗口在屏幕上弹出的位置
ax = fig.add_axes([0.08, 0.08, 0.85, 0.85])  # [距离左边,下边,坐标轴宽度,坐标轴高度] 范围(0, 1)
# 改变文字大小参数-fontsize
plt.xticks(np.arange(105, 125, 2), fontsize=4)
plt.yticks(np.arange(0, 25, 2), fontsize=4)
plt.contourf(lon, lat, ele[:, :], cmap=DarkMint_7.mpl_colormap)
plt.show()
from palettable.cmocean.diverging import Delta_4

# %% 图二
fig = plt.figure(dpi=300, figsize=(2, 2), facecolor='w', edgecolor='blue')
mngr = plt.get_current_fig_manager()  # 获取当前figure manager
mngr.window.wm_geometry("+58+51")  # 调整窗口在屏幕上弹出的位置
ax = fig.add_axes([0.08, 0.08, 0.85, 0.85])  # [距离左边,下边,坐标轴宽度,坐标轴高度] 范围(0, 1)
# 改变文字大小参数-fontsize
plt.xticks(np.arange(105, 125, 2), fontsize=4)
plt.yticks(np.arange(0, 25, 2), fontsize=4)
plt.contourf(lon, lat, ele[:, :], cmap=Delta_4.mpl_colormap)
plt.show()
from palettable.colorbrewer.sequential import GnBu_9
# %% 图三
fig = plt.figure(dpi=300, figsize=(2, 2), facecolor='w', edgecolor='blue')
mngr = plt.get_current_fig_manager()  # 获取当前figure manager
mngr.window.wm_geometry("+58+51")  # 调整窗口在屏幕上弹出的位置
ax = fig.add_axes([0.08, 0.08, 0.85, 0.85])  # [距离左边,下边,坐标轴宽度,坐标轴高度] 范围(0, 1)
# 改变文字大小参数-fontsize
plt.xticks(np.arange(105, 125, 2), fontsize=4)
plt.yticks(np.arange(0, 25, 2), fontsize=4)
plt.contourf(lon, lat, ele[:, :], cmap=GnBu_9.mpl_colormap)
plt.show()
cmap = GnBu_9.mpl_colormap
cmap_r = reverse_colourmap(cmap)
# %% 图四
fig = plt.figure(dpi=300, figsize=(2, 2), facecolor='w', edgecolor='blue')
mngr = plt.get_current_fig_manager()  # 获取当前figure manager
mngr.window.wm_geometry("+58+51")  # 调整窗口在屏幕上弹出的位置
ax = fig.add_axes([0.08, 0.08, 0.85, 0.85])  # [距离左边,下边,坐标轴宽度,坐标轴高度] 范围(0, 1)
# 改变文字大小参数-fontsize
plt.xticks(np.arange(105, 125, 2), fontsize=4)
plt.yticks(np.arange(0, 25, 2), fontsize=4)
plt.contourf(lon, lat, ele[:, :], cmap=cmap_r)
plt.show()
#%% 图五
fig = plt.figure(dpi=300, figsize=(2, 2), facecolor='w', edgecolor='blue')
mngr = plt.get_current_fig_manager()  # 获取当前figure manager
mngr.window.wm_geometry("+58+51")  # 调整窗口在屏幕上弹出的位置
ax = fig.add_axes([0.08, 0.15, 0.85, 0.84])  # [距离左边,下边,坐标轴宽度,坐标轴高度] 范围(0, 1)
# 改变文字大小参数-fontsize
plt.xticks(np.arange(105, 125, 2), fontsize=4)
plt.yticks(np.arange(0, 25, 2), fontsize=4)
plt.contourf(lon, lat, ele[:, :], cmap=cmap_r)
# ------tick向内
tick_params(direction='in')
# -------colorbar调整
position = fig.add_axes([0.15, 0.05, 0.7, 0.03])#位置[左,下,右,上]
cb = plt.colorbar(label="depth", cax=position, orientation='horizontal')#方向
cb.ax.tick_params(labelsize=4) #设置colorbar刻度字体大小。
# ------tick向内
tick_params(direction='in')
plt.show()
# %% 图六
fig = plt.figure(dpi=300, figsize=(2.2, 2), facecolor='w', edgecolor='blue')
mngr = plt.get_current_fig_manager()  # 获取当前figure manager
mngr.window.wm_geometry("+58+51")  # 调整窗口在屏幕上弹出的位置
ax = fig.add_axes([0.06, 0.08, 0.75, 0.85])  # [距离左边,下边,坐标轴宽度,坐标轴高度] 范围(0, 1)
# 改变文字大小参数-fontsize
plt.xticks(np.arange(105, 125, 2), fontsize=4)
plt.yticks(np.arange(0, 25, 2), fontsize=4)
plt.contourf(lon, lat, ele[:, :], cmap=cmap_r)
# ------tick向内
tick_params(direction='in')
# -------colorbar调整
position = fig.add_axes([0.83, 0.08, 0.03, 0.85])#位置[左,下,右,上]
cb = plt.colorbar(label="depth", cax=position, orientation='vertical')#方向
cb.ax.tick_params(labelsize=4) #设置colorbar刻度字体大小。
# ------tick向内
tick_params(direction='in')
plt.show()
图片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海洋与大气科学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值