python--proplot的一些使用方法记录,主要是绘图部分

简介: 整理记录一下使用proplot进行绘图过程的一些小技巧

整理记录一下使用proplot进行绘图过程的一些小技巧



1、创建画板,非投影转换


f, axs = pplt.subplots( ncols=1, nrows=1, 
                       yreverse=True,
                       share =1,
                       figsize=(8,6)
                       )
创建一个1x1的子图
ncols代表列
nrows代表行
yreverse=True 表示翻转y轴,与matplotlib.pyplot中的ax.invert_yaxis()作用相同
share=1,2,3,4,False  表示共享横轴、纵轴、colorbar、标题等信息,False表示不共享
figsize :设置画板的大小,可以根据需要设置,不添加的话是系统默认的格式


2、创建画板,含投影


f, ax = pplt.subplots( ncols=1, nrows=1, 
                        axwidth=5,
                        refwidth=2,
                        suptitle='subplot ',
                       # figsize=(5,4),
                       proj='cyl',
                       proj_kw={'lon_0': 180}, lonlim=(100, 200), 
                             latlim=(-20, 20),
                       share=4,
                       )
与matplotlib.pyplot的创建方式的区别,投影可以直接在创建画板时设置。
axwidth :调节画板的清晰度,可能,没怎么用过
refwidth: 各子图的长宽比
suptitle:各子图的总标题
 proj='cyl', 设置为等间距投影
 proj_kw={'lon_0': 180}, lonlim=(100, 200), 
                             latlim=(-20, 20),
                             表示设置中心经度为180°,地图的经度范围是:100E-200E,
                             纬度范围是:-20S-20N


3、填色图的命令


m=ax.contourf(lon,lat,pre,
            colorbar='l',
            cmap = cmap,
            extend='both',
            colors=[ 'blue9','blue6','blue4', 'blue2','blue0',
                        'white','white',
                        'yellow3','yellow6', 'orange7', 'red8','red9'
                        ],
             colorbar_kw={'label': '',
                             'lw':0.5},
            levels = np.linspace(-30,30,31)
            )
基本的命令和matplot.pyplot类似,多了一些额外的功能
colorbar='l' :设置colorbar的显示位置,可以直接在contourf()里面设置了
extend='both':设置色标两边的范围为延申形式,没有定死
lw=0.7  :如果是绘制等值线的话,可以控制线的粗细
colors=[ 'blue9','blue6','blue4', 'blue2','blue0',
                        'white','white',
                        'yellow3','yellow6', 'orange7', 'red8','red9'
                        ],   可以自己构建cmap,用colors就不需要使用cmap了
 colorbar_kw={'label': '',
                             'lw':0.5},  设置colorbar的label以及线的宽度


4、带有投影的基本细节属性


ax.format(     title='TD-type disturbance structure ',
                titleloc='l',
                rtitle='Level:850(hPa)',
                xformatter=LongitudeFormatter(),
                xlim=(100,200),
                xlabel='lon',
                coast=True, 
                    labels=True,
                grid=True,
              gridlinewidth=0.5,gridalpha=0.2,
              lonlines=20,
              latlines=10,
              rc_kw={'tick.pad': 8}
                )
 title='TD-type disturbance structure ', 设置图的标题,标题的位置
 titleloc='l',
rtitle='Level:850(hPa)', :设置图右边的标题,
ltitle='850(hPa)'  :  左边的标题同理
xformatter=LongitudeFormatter(), :设置x轴的ticklabel为经度的形式
xlim=(100,200),   设置x轴经度显示的范围
xlabel='lon',     设置x轴的标签,为:lon
coast=True,    打开海岸线
labels=True,   打开x轴和y轴的刻度
grid=True,     打开网格线
gridlinewidth=0.5, 设置网格线的宽度
gridalpha=0.2,     设置网格线的透明度
lonlines=20,       设置经度的显示间距
latlines=10,       设置纬度的显示间距
rc_kw={'tick.pad': 8}  设置ticklabel距离tick的间距,但是在投影的图里好像不起作用


5、没有投影的基本细节属性,普通绘图的基本属性


axs.format(     title='V(m/s) ',
                titleloc='l',
                rtitle='Level:950-200(hPa)',
                xformatter=LongitudeFormatter(),
                xlim=(100,210),
                xlabel='',
                yticks=pplt.arange(0,40,1),
                grid=True,
                xticks=10,  ## x 间隔
                  xtickminor=True, xgridminor=True,
                  ytickminor=False, ygridminor=True,
                  rc_kw={'geogrid.alpha':0.3},
                  xticks=pplt.arange(0,40,4),
                  fontsize=20,  
                  xlocator=1, xminorlocator=0.5,
                  xrotation=20,
                   yticks=[950, 800,600,500,400,300, 200],
        yscale='symlog',
)
与带投影的起始差不了太多,主要就是关于经纬度坐标的设置有些差别
xticks=10,  ## 设置x轴ticklabel的间隔
xtickminor=True, xgridminor=True,  打开x轴的ticklabel的最小值,以及网格线的最小值
ytickminor=False, ygridminor=True,  这个是设置y轴的
rc_kw={'geogrid.alpha':0.3}  设置网格线的透明度
xticks=pplt.arange(0,40,4),  设置x轴tick的具体范围
fontsize=20,    字体的大小   
 xrotation=20,     xticklabel的旋转的角度
  yticks=[]     设置yticks的具体显示数值
  yscale='symlog',   设置y轴的缩放形式,一般画垂向分布的时候用


6、绘制普通折线图plot


ax.plot(x,y,label='dpdy',legend='ur')
label='dpdy',  设置y轴的坐标
legend='ur'    设置图例在右上方,在绘图的时候可以直接设置,


7、一些其他小技巧


ax.axvline(x=18, color='grey', linewidth=1.5,linestyle='-.')  
绘制一条垂直线, 颜色为灰色,lw表示线的宽度,ls为线的风格
ax.axhline(y=0, color='grey', linewidth=1.5,linestyle='--') 
绘制一条水平线,
ox = ax.alty(color='blue8', linewidth=1)
lns2=ox.plot(x,dm2,color='blue8',
              label=r'$-V \cdot \nabla P$')
共用x轴,绘制一条折线
ox2 = ax.twinx( yloc=('axes', 1.05),  color='green4', linewidth=1)
lns3=ox2.plot(x,dm3*10**11,color='green4', 
              label=r'$-\omega \frac{\partial P}{\partial p}$',)
还是共享x轴绘制一条折线,但是这个y轴不在图上
lns = lns1+lns2+lns3+lns4
labs = [l.get_label() for l in lns]
ax.legend(lns, labs,loc='ul',ncols=2, center=False, frame=True)
将共享同一条x轴的折线的y轴的图例画在同一个框内,不然就是四个不同的图例了
ax.bar(x,datay.T*10**11,
       0.2,
       cycle=['c','blue','red6'],
        label=['MRG','TD','TC'],
        edgecolor='grey',
        legend='ul',
         colorbar_kw={'frameon': False}
  color=np.where(y>0,'tomato','tab:blue'), #判断大于0的为红色,负的为蓝色
          )
将三个不同的数据的柱形图画在同一个子图上,
三个柱形图的颜色不同,名称也不同,图例的位置为左上角
ax.text(9,0.85,'MRG',bbox=True,bordercolor='w',
        borderstyle='miter', 
        bboxcolor='w', 
        bboxstyle='square', bboxalpha=0.5, )
在图上添加text ,设置边缘颜色等
 axs[i,j].scatter(lon_center[i,j],875,marker='v',
                         markersize=150,
                         c='red9',
                         alpha=0.8,
                         zorder=2)
  绘制散度图的一些命令
ax.format()
可以用来设置全局的坐标属性等,如果存在子图的画,也可以指定某个子图设置属性


相关文章
|
2月前
|
JSON JavaScript 前端开发
Python中使用JsonPath:概念、使用方法与案例
Python中使用JsonPath:概念、使用方法与案例
123 0
|
2天前
|
数据可视化 Linux 数据格式
`seaborn`是一个基于`matplotlib`的Python数据可视化库,它提供了更高级别的接口来绘制有吸引力的和信息丰富的统计图形。`seaborn`的设计目标是使默认图形具有吸引力,同时允许用户通过调整绘图参数来定制图形。
`seaborn`是一个基于`matplotlib`的Python数据可视化库,它提供了更高级别的接口来绘制有吸引力的和信息丰富的统计图形。`seaborn`的设计目标是使默认图形具有吸引力,同时允许用户通过调整绘图参数来定制图形。
5 0
|
2天前
|
Python
`matplotlib`是Python中一个非常流行的绘图库,它提供了丰富的绘图接口,包括二维和三维图形的绘制。`Axes3D`是`matplotlib`中用于创建三维坐标轴的对象,而`plot_surface`则是用于在三维空间中绘制表面的函数。
`matplotlib`是Python中一个非常流行的绘图库,它提供了丰富的绘图接口,包括二维和三维图形的绘制。`Axes3D`是`matplotlib`中用于创建三维坐标轴的对象,而`plot_surface`则是用于在三维空间中绘制表面的函数。
11 0
|
25天前
|
定位技术 Python
Python的try、except异常处理模块使用方法
所以,我们就解决了由于可能具有的arcpy.ExecuteError异常而导致的程序中断问题;大家在实际使用时,按照自己程序中可能出现的报错类,对本文出现的arcpy.ExecuteError异常类加以修改即可。
|
13天前
|
安全 Java 开发者
Python中的多线程高级使用方法
**Python多线程高级指南摘要** 本文探讨了Python中多线程的高级技术,尽管GIL限制了并行执行,但多线程仍适用于IO密集型任务和提升UI响应。内容包括: - 使用`threading`模块导入和创建线程,示例展示了如何启动多个线程执行函数。 - 高级用法涉及线程池,通过`ThreadPoolExecutor`管理线程,简化大量线程的创建和控制。 - 线程同步:介绍锁和条件变量的概念,以及如何使用它们确保数据一致性。 - 避免死锁的策略,如使用`try/finally`确保锁的正确释放 - 线程局部数据(Thread Local Data)允许每个线程拥有独立的数据副本,避免冲突
|
19天前
|
SQL 关系型数据库 MySQL
Python中pymysql的使用方法
Python中pymysql的使用方法
|
19天前
|
存储 数据库 数据安全/隐私保护
Python基础语法及使用方法
Python基础语法及使用方法
19 0
3个常用的Python性能分析工具及其使用方法
以下是几个常用的性能分析工具及其使用方法和常用命令:
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
Python绘图工具Matplotlib安装与使用,快速上手
Python绘图工具Matplotlib安装与使用,快速上手
|
2月前
|
存储 安全 Linux
python文件操作open的使用方法详解
python文件操作open的使用方法详解