登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Matplotlib Colorbar设置这两天一直在调整水深的colorbar,对colorbar的使用也有一定的理解,在这里写下来,一是怕自己忘记了,二是希望给大家能够借鉴,有所启发。 总的来说有三种方法:1、借鉴matplotlib自带的colormap reference;2、使用python模块palettable里面的colormap;3、截取自己感觉最合适的colorbmap中的一部分,制作新的colormap。当然还有第4中方法,就是参考matplotlib中的creating a colormap from a list of colors,从头开始制作一个全新的colormap(一般而言我不会这么干,一是因为借鉴已经做好的colormap,截取其中一部分,感觉更简单;二是自己对颜色本就不太敏感,经常蓝绿不分,对自己做出来的colormap没有信心……) 一般而言只需要前两种方法,就能够解决大部分的colorbar问题,除非是对colorbar的颜色有很深的要求,一般不会用到第3中方法(本人就是因为需要对颜色进行细致的控制,所以这两天才学会了方法1, 2, 3 ……) 1. 使用matplotlib自带的colormap1,首先导入模块 Import matplotlib.pyplot as plt 2,在contour或contourf中使用cmap关键字 Plt.contourf(LON, LAT, ZETA, level, cmap=plt.get_cmap(‘Blues’), alpha=0.8, zorder=1) 至于coutour中每个参数的意义,我就不多说了,大家自己去查。其中plt.get_cmap(‘Blues’)指的是使用matplotlib.colors中的名为‘BLues’的colormap。至于其他的colormap可去官网查看。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsA079.tmp.jpg 图1 “Blues”colorbar
(注,也可以使用这种方法选择‘Blues’colormap From matplotlib import cm Import matplotlib.pyplot as plt cmap = cm. get_cmap(‘Blues’)) Plt.contourf(LON, LAT, ZETA, level, cmap=cmap, alpha=0.8, zorder=1)) 建议使用这种方式,因为可以和下面的第2种,第3种有所关联。其实无所谓了,都挺简单)
Contour参数: Colormap: 2. 使用palettable模块中的colormap1,要使用这个模块,首先你的安装这个模块, pip install palettable 2,导入模块 Import palettable From matplotlib.colors import ListedColormap 3,选择colormap cmap = ListedColormap(palettable.cmocean.sequential.Deep_20.mpl_colors) 注意后面的mpl_colors一定要加上,至于为啥,我也不清楚…… 再告诉大家一个小技巧,可以在Deep_20后面加一个_r,即 cmap = ListedColormap(palettable.cmocean.sequential.Deep_20_r.mpl_colors) 表示colorbar反转 4,在contour或contourf中使用cmap关键字 Plt.contourf(LON, LAT, ZETA, level, cmap=cmap, alpha=0.8, zorder=1)
让我们来看看这个里面有多少的colormap。总共有8大类,有些类里面还有一些子类(大概2-3个), file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsA08A.tmp.jpg 图2 8大类
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsA08B.tmp.jpg 图3 3小类
可以看到这里面有关于海洋的colormap :cmocean。来看看里面的colorbar长什么样。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsA08C.tmp.jpg file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsA08D.tmp.jpg file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsA09D.tmp.jpg 图4 cmocean :sequential中的colorbar 其中值得注意的是Cubehelix中可以定义自己的调色板palette,换句话来说就是定义自己的colormap(我没这么干,因为调出来的太难看了……)
3. 截取colorbmap中的一部分,制作新的colormap1,导入模块 import matplotlib.pyplot as plt from matplotlib import cm from matplotlib.colors import ListedColormap import palettable 2,使用matplotlib自带的colormap制作新的colormap (1)获取名为“Blues”的colormap blues = cm.get_cmap('Blues', 256) (2)获取blues的颜色列表(这个颜色列表为256 * 4的数组,) newcolors = blues(np.linspace(0, 1, 256)) file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsA09E.tmp.jpg 图5 blues颜色列表格式(格式是这样的,值不对,因为是viridis的颜色表) (3)选取“Blues”colorbar的一部分 new = newcolors[256:30:-1] 注意:这里选取就是使用列表切片,可以正向,可以反向,反向就相当于colorbar反转 (4)制作成新的colormap newmap = ListedColormap(new) (5)在contour或contourf中使用cmap关键字 Plt.contourf(LON, LAT, ZETA, level, cmap=newmap, alpha=0.8, zorder=1) 3,使用palettable中的colormap制作新的colormap deep = ListedColormap(palettable.cmocean.sequential.Deep_20.mpl_colors) newcolors = deep(np.linspace(0, 1, 256)) new = newcolors[220:0:-1] newmap = ListedColormap(new) 截取部分colorbar参考网址: 4. 参考matplotlib中的creating a colormap from a list of colors,从头开始制作一个全新的colormap.................................................................................................................................................... 至于怎么做,大家参考网址吧(我没干过……): 最后说一句,最好的教程还是官方文档啊,只不过人家是英文的……
附一张我最后的图(当然是经过处理的……)
注:这个程序是不能直接运行的,因为我没有把数据上传上来,原因……………… file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wpsA09F.tmp.jpg
|