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

news2024/12/23 8:46:54

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()
图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1054465.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV实现视频的追踪(meanshift、Camshift)

目录 1,meanshift 1.1 算法流程 1.2 算法实现 1.3 代码实现 1.4 结果展示 1,meanshift 1.1 算法流程 1.2 算法实现 1.3 代码实现 import numpy as np import cv2 as cv# 读取视频 cap cv.VideoCapture(video.mp4)# 检查视频是否成功打开 if n…

意大利储能公司【Energy Dome】完成1500万欧元融资

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于意大利米兰的储能公司Energy Dome今日宣布已完成1500万欧元B轮融资。 本轮融资完成后,Energy Dome的融资总额已经达到了5500万欧元,本轮融资的参与者包括阿曼创新发…

【Java 进阶篇】JDBC插入数据详解

在Java应用程序中,与数据库交互是一项常见的任务。其中,插入数据操作是一种基本的数据库操作之一。本文将详细介绍如何使用Java JDBC(Java Database Connectivity)来执行插入数据操作。无论您是初学者还是有一定经验的开发人员&am…

好题分享

1.Problem - G - Codeforces (1)题意 (2)思路 因为最多13次,那么不如我们就问13次,然后考虑把每一个位置重新按二进制拆分成一个下标,因为C(13,6) > 1000,因此在数量上是满足得,我…

【centos7】centos7卸载gitlab

一、GitLab安装 1. 安装依赖包 yum install -y curl policycoreutils-python openssh-server 2. 安装lrzsz(如已经安装可忽略) yum -y install lrzsz 3. 下载rpm包 cd /usr/local wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gi…

spring security(二)--授权

零.前情提要 这篇文章主要借鉴B站三更大大关于spring security的教程,这篇文章的大部分内容也来自于那个教程,写这个的主要目的是记录加强印象,总结,并且在文章中我也有穿插自己的想法。 前面的文章【spring security教程&#…

java Spring Boot 将日志写入文件中记录

我们之前的一套操作来讲 日志都是在控制台上的 但 如果你的项目在正式环境上跑 运维人员突然告诉你说日志报错了,但你日志只在控制台上,那公司项目如果访问量很大 那你是很难在控制台上找到某一条日志的 这时 我们就可以用文件把它记下来 我们打开项目 …

python使用mitmproxy和mitmdump抓包在电脑上抓包(二)

在我的上篇文章中,主要记录如何安装mitmproxy和抓取https流量。参考链接: python使用mitmproxy和mitmdump抓包在电脑上抓包-CSDN博客 本篇主要使用python配合mitmdump来抓包和处理返回包,更加灵活,这也是mitmproxy(mitmdump)的最…

快看看你的手机有没有:谷歌Android全面封杀此类软件!

谷歌坐不住了,因为Android应用商店中,充斥着大量可窃取用户数据的应用,所以必然要出手整治了。 一款名叫“SonicSpy”软件是整个事情的导火索,而该应用是典型的窃取用户数据的应用,其除了可以从手机中提取个人数据外&…

一维数组和二维数组的使用(一)

目录 导读1. 一维数组1.1 一维数组的创建1.2 数组的初始化1.3 一维数组的使用1.4 一维数组在内存中的存储 2. 二维数组2.1 二维数组的创建2.2 二维数组的初始化2.3 二维数组的使用2.4 二维数组在内存中的存储 博主有话说 导读 本篇主要讲解一维数组和二维数组的创建和使用&…

【Redis】redis基本数据类型详解(String、List、Hash、Set、ZSet)

目录 RedisString(字符串)List(列表)Hash(字典)Set(集合)ZSet(有序集合) Redis Redis有5种基本的数据结构,分别为:string(字符串)、list(列表)、set(集合)、hash(哈希&a…

【Django笔记】认证系统

使用Django 的认证系统实现用户信息验证 在前面使用migrate 命令进行数据迁移时候,生成了auth_user表 ,该表中存放了用户信息可以用来登录Django自带的Admin 管理后台。 创建Admin 后台管理账号 python manage.py createuperuser E:\data\python\djaongo_prj\gu…

看完这篇 教你玩转渗透测试靶机Vulnhub——Healthcare:1

Vulnhub靶机Healthcare:1渗透测试详解 Vulnhub靶机介绍:Vulnhub靶机下载:Vulnhub靶机安装:①:信息收集:②:漏洞发现SQL注入:③:SQL注入漏洞利用:④:反弹Shell…

【开发篇】七、RedisTemplate与StringRedisTemplate + Jedis与Lettcus

文章目录 1、RedisTemplate详解2、常用方法3、关于IDEA的报黄4、RedisTemplate和StringRedisTemplate的区别5、如何通用RedisTemplate和StringRedisTemplate6、Jedis7、Jedis的连接池8、封装Jedis工具类8、RedisTemplate底层实现技术切换 1、RedisTemplate详解 RedisTemplate是…

基于Java的大学生社团管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

二十七、[进阶]MySQL默认存储引擎InnoDB的简单介绍

1、MySQL体系结构 MySQL大致可以分为连接层、服务层、引擎层、存储层四个层,这里需要注意,索引的结构操作是在存储引擎层完成的,所以不同的存储引擎,索引的结构是不一样的。 (1)体系结构示意图 &#xff0…

【数据结构】抽象数据类型

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 🎏数据类型 🎏抽象数据类型 结语 🎏数据类型 数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称. 数据类型(d…

【vue3】自定义hook函数

假期第三篇&#xff0c;对于基础的知识点&#xff0c;我感觉自己还是很薄弱的。 趁着假期&#xff0c;再去复习一遍 【vue3 】hook函数 hook本质上是一个函数&#xff0c;把setup中使用的Composition API进行了封装 假设需求是获取当前点击时鼠标的坐标 <template><…

Pycharm操作git仓库 合并等

菜单 Git CommitPushUpdate ProjectPullFetchMergreRebase 查询 查询分支 查询本地所有分支 # 查询本地分支 git branch# 查询远程分支 git branch -rPycharm查看当前分支 步骤&#xff1a; Git->Branches 哈喽&#xff0c;大家好&#xff0c;我是[有勇气的牛排]&…

网络正常,微信正常登录,谷歌浏览器无法正常打开(100%解决)

背景&#xff1a; 笔记本电脑&#xff0c;操作系统&#xff1a;windows10&#xff0c;网络&#xff1a;wifi/或者有线连接。 谷歌浏览器&#xff1a;最新版本&#xff1a;115.0.5790.171 可以正常使用微信&#xff0c;无法使用谷歌浏览器打开对应的网址。 解决办法&#xff1a;…