【Datawhale 科研绘图】 2.3 ProPlot打卡

本文介绍了ProPlot库在数据可视化中的应用,包括多子图的绘制处理,如何方便地添加颜色条和图例,以及提供更美观的颜色映射和字体选择。ProPlot是Matplotlib的高级封装,支持与cartopy、xarray和pandas的整合,能弥补Matplotlib的不足。文章展示了ProPlot在颜色条和图例定位、科学颜色映射选择等方面的改进,提升了科研图表的视觉效果。
部署运行你感兴趣的模型镜像

【Datawhale 科研绘图】 2.3 ProPlot打卡

ProPlot安装 ,参考了很多资料最后总结如下

pip install matplotlib==3.4.3

pip install SciencePlots
pip install ProPlot

下载超时解决办法:更换为国内源

pip --default-timeout=100 install SciencePlots[可替换为其他] -i https://pypi.douban.com/simple

ProPlot介绍

ProPlot 库[5]是 Matplotlib 面向对象绘图方法(object-oriented interface)的高级封装
整合了 cartopy/Basemap 地图库、xarray 和 pandas,可弥补 Matplotlib 的部分缺陷。

2.3.1 多子图绘制处理

  1. 共享轴标签

```python
import pandas as pd
import numpy as np
import proplot as pplt
import matplotlib.pyplot as plt
#导入警告包
import warnings
warnings.filterwarnings("ignore")

#数据部分
N = 50
M = 40
state = np.random.RandomState(51423)
cycle = pplt.Cycle('grays', M, left=0.1, right=0.8)

datas = []
for scale in (1, 3, 7, 0.2):
    data = scale * (state.rand(N, M) - 0.5).cumsum(axis=0)[N // 2:, :]
    datas.append(data)
 ```c
 
# 绘图部分
# Plots with different sharing and spanning settings
# Note that span=True and share=True are the defaults
spans = (False, False, False, False)
shares = (False, 'labels', 'limits', True)
for i, (span, share) in enumerate(zip(spans, shares)):
   fig = pplt.figure(refaspect=1, refwidth=1.06, spanx=span, sharey=share)
   axs = fig.subplots(ncols=3)
   for ax, data in zip(axs, datas):
       on = ('off', 'on')[int(span)]
       ax.plot(data, cycle=cycle)
       ax.format(
           grid=False, xlabel='X labels', ylabel='shared axis',
           #suptitle=f'Sharing mode {share!r} (level {i}) with spanning labels {on}'
       )

plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.2 ProPlot 库中专门用于绘制【单个子图或多个连续子图】的颜色条和图例的简单框架

该框架将位置参数传递给 ProPlot 的 axes.Axes.colorbar 或 axes.Axes.legend,完成特定子图不同位置颜色条或图例的绘制。
想要沿图形边缘绘制颜色条或图例,使用 proplot.figure.Figure.colorbar 和 proplot.figure.Figure.legend 即可。

图 2-3-4 为 ProPlot 的 Axes对象的颜色条和图例的绘制效果图

图 2-3-5 为 Figure 对象的 颜色条和图例的绘制效果图

import pandas as pd
import numpy as np
import proplot as pplt
import matplotlib.pyplot as plt

fig = pplt.figure(share=False, refwidth=2.3)

# Colorbars 颜色条
ax = fig.subplot(121)
state = np.random.RandomState(51423)
m = ax.heatmap(state.rand(10, 10), colorbar='t', cmap='marine') 
# cmap='grays'/marine 颜色类型选择

ax.colorbar(m, loc='r')
ax.colorbar(m, loc='ll', label='colorbar label')
ax.format(title='Axes colorbars')

#-----------------------------------------------------------------
# Legends  图例
ax = fig.subplot(122)
ax.format(title='Axes legends', titlepad='0em')
hs = ax.plot(
    (state.rand(10, 5) - 0.5).cumsum(axis=0), linewidth=3,
    cycle='ggplot', legend='t',
    labels=list('abcde'), legend_kw={'ncols': 5, 'frame': False}
)
ax.legend(hs, loc='r', ncols=1, frame=False)
ax.legend(hs, loc='ll', label='legend label')
fig.format(abc="(a)", abcloc="ul",abcsize=15, 
           xlabel='xlabel', ylabel='ylabel')

plt.show()

颜色条Colorbars 颜色条

图例在这里插入图片描述

2.3.3 更加美观的颜色和字体

科学可视化展示中的一个常见问题是使用像“jet”这样的存在误导的颜色映射(colormap)
去映射对应数值,这种颜色映射在色相、饱和度和亮度上都存在明显的视觉缺陷

ProPlot 库封装了大量的颜色映射选项,不但提供了来自 Seaborn、cmOcean、
SciVisColor 等拓展包和 Scientific colour maps 等项目中的多个颜色映射选项,而且定义了一些
默认颜色选项和一个用于生成新颜色条的 PerceptualColormap 类。

  • 不同绘图库的颜色映射展示

Matplotlib 的默认绘图字体为 DejaVu Sans,这种字体是开源的,但是,从美学角度来说,
它并不太讨人喜欢。

ProPlot 库还附带了其他几种无衬线字体和整个 TeX Gyre 字体系列,这些字体 更加符合一些科技期刊对科研论文配图的绘制要求。图
2-3-6 为使用 ProPlot 的不同颜色映射选 项绘制的不同颜色映射的效果图。

其中,图 2-3-6(a)为灰色(grays)系颜色映射,
图 2-3-6(b)为 Matplotlib 默认的 viridis 颜色映射,
图 2-3-6(c)为 Seaborn 中的 mako 颜色映射,

图 2-3-6(d)为 ProPlot 中的 marine 颜色映射,
图 2-3-6(e)为 cmOcean 中的 dense 颜色映射,
图 2-3-6(f)为 Scientific colour maps 中的 batlow 颜色映射。更多颜色映射的绘制请参考 ProPlot 官方教程。
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值