前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在哪里找好看的colorbar

在哪里找好看的colorbar

作者头像
用户11172986
发布2024-06-20 16:44:51
860
发布2024-06-20 16:44:51
举报
文章被收录于专栏:气python风雨气python风雨

刚接触或者接触一段时间Python的小伙伴应该有这种疑问,怎么把自己的图画得好看?其中配色是一个关键因素,这个之前在如何使用手游角色给科研赋能——藿藿篇中写了怎么用一张手游立绘凑出一个色卡。

下面介绍几个获取色卡的途径

  1. cmaps库 非常好用的第三方库,能轻松调用ncl丰富的色卡。 使用方式:在matplotlib的填色函数中写上cmap=cmaps.色卡名 如不知道色卡名字可前往这个网站: ‍https://www.ncl.ucar.edu/Document/Graphics/color_table_gallery.shtml

2.自制色卡

除了发癫用原神或者星穹轨道角色制卡,你还有以下选择

http://zhongguose.com/

https://color.hailpixel.com/

每次的点击都会产生配色。

快用你高级的审美征服审稿人吧。

至于生成的配色怎么制作成色卡。

请听这回分解。

选出色号后进行RGB排序

代码语言:javascript
复制
代码语言:javascript
复制
colors = ['#5c2223', '#5a191b', '#5a1216', '#c04851', '#ed5a65', '#f07c82', '#eea2a4', '#ee3f4d', '#c02c38', '#a7535a']

# 将颜色转换为RGB格式
rgb_colors = [tuple(int(colors[i][j:j+2], 16) for j in (1, 3, 5)) for i in range(len(colors))]

# 计算颜色的"暖度",这里简单地使用了RGB颜色空间中的一维表示方法
warmth = [r for r, g, b in rgb_colors]

# 按照"暖度"对颜色进行排序
sorted_colors = [x for _, x in sorted(zip(warmth, colors))]

print(sorted_colors)
代码语言:javascript
复制
代码语言:javascript
复制
['#5a1216', '#5a191b', '#5c2223', '#a7535a', '#c02c38', '#c04851', '#ed5a65', '#ee3f4d', '#eea2a4', '#f07c82']

开始绘图

代码语言:javascript
复制
代码语言:javascript
复制
import xarray as xr
import matplotlib.pyplot as plt
import numpy as np
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
from matplotlib.colors import LinearSegmentedColormap

# 定义颜色列表,从冷到暖排序
colors = sorted_colors

# 创建自定义的色卡
custom_colormap = LinearSegmentedColormap.from_list('custom_cmap', colors)

# 打开数据集
nc = xr.open_dataset('/home/mw/input/1107125177/2023110720.nc')
data = nc.z[0, 2, :, :]/98
lons = data.longitude
lats = data.latitude

fig = plt.figure(figsize=(11, 8.5))

# 设置地图投影为PlateCarree
ax = plt.axes(projection=ccrs.PlateCarree())

# 绘制填充等值线图
cs = ax.contourf(lons, lats, data, transform=ccrs.PlateCarree(), cmap=custom_colormap, levels=np.linspace(data.min(), data.max(), 20))

# 添加网格线
ax.gridlines(draw_labels=True, dms=True, x_inline=False, y_inline=False)

# 添加海岸线
ax.coastlines()

# 添加颜色条,并设置标题
cbar = plt.colorbar(cs, orientation='horizontal')
cbar.set_label('位势高度 (m)')

# 设置标题和标签
plt.title('500hPa Geopotential Height', fontsize=16)
plt.xlabel('Longitude', fontsize=12)
plt.ylabel('Latitude', fontsize=12)

# 显示图形
plt.show()
代码语言:javascript
复制

谢谢观看。

ps: 如果想在图像某些位置加上文字说明可以加plt.text()

具体怎么用CSDN里说得很全面,就不赘述了。

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

本文分享自 气python风雨 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档