python

您所在的位置:网站首页 小脑在人的哪个部位图解 python

python

2024-07-14 20:27:49| 来源: 网络整理| 查看: 265

这看起来应该是一个简单的修复,但我无法让它工作。我希望在附图中显示 40°N,但将 drawparallels 中的标签参数设置为 [1,0,1,1] 并不能解决问题。根据文档,这应该绘制平行线标签,它们与图的左侧、顶部和底部相交。我还希望 0° 再次出现在右下角。知道如何解决这 2 个问题吗?

from netCDF4 import Dataset as NetCDFFile import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.basemap import Basemap from mpl_toolkits.basemap import addcyclic nc = NetCDFFile('C:/myfile.nc') lat = nc.variables['lat'][:] lon = nc.variables['lon'][:] time = nc.variables['time'][:] olr = nc.variables['olr'][:] olr,lon = addcyclic(olr,lon) map = Basemap(llcrnrlon=0.,llcrnrlat=-40.,urcrnrlon=360.,urcrnrlat=40.,resolution='l') lons,lats = np.meshgrid(lon,lat) x,y = map(lons,lats) levels = np.arange(-19.5,20.0,0.5) levels = levels[levels!=0] ticks = np.arange(-20.0,20.0,4.0) cs = map.contourf(x,y,olr[0],levels, cmap='bwr') cbar = plt.colorbar(cs, orientation='horizontal', cmap='bwr', spacing='proportional', ticks=ticks) cbar.set_label('Outgoing Longwave Radiation Anomalies $\mathregular{(W/m^2)}$') map.drawcoastlines() map.drawparallels(np.arange(-40,40,20),labels=[1,0,1,1], linewidth=0.5, fontsize=7) map.drawmeridians(np.arange(0,360,40),labels=[1,1,0,1], linewidth=0.5, fontsize=7)

最佳答案

问题的第一部分很简单。为了显示标签,您必须实际绘制平行线,但 np.arange(-40,40,20) 不包括 40。因此,如果将该语句更改为 np.arange(-40,41,20),您的 40N 标签将会显示。

第二部分原则上应该可以用同样的方式解决,但是 Basemap 显然使用经度的模数来计算标签的位置,所以只需使用 np.arange(0,361,40) 绘制子午线时,将导致两个 0 标签彼此重叠。但是,我们可以捕获 drawmeridians 生成的标签并手动更改第二个 0 标签的位置。标签存储在字典中,因此很容易处理。为了计算最后一个标签的 x 位置,我计算了第一个和第二个标签之间 x 位置的差异,将其乘以要绘制的子午线数量 (360/40),然后加上第一个标签的 x 位置标签。

这里是完整的例子:

import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.basemap import Basemap map = Basemap(llcrnrlon=0.,llcrnrlat=-40.,urcrnrlon=360.,urcrnrlat=40.,resolution='l') map.drawcoastlines() yticks = map.drawparallels( np.arange(-40,41,20),labels=[1,0,1,1], linewidth=0.5, fontsize=7 ) xticks = map.drawmeridians( np.arange(0,361,40),labels=[1,1,0,1], linewidth=0.5, fontsize=7 ) first_pos = xticks[0][1][0].get_position() second_pos = xticks[40][1][0].get_position() last_x = first_pos[0]+(second_pos[0]-first_pos[0])*360/40 xticks[360][1][0].set_position((last_x,first_pos[1])) plt.show()

这里是结果图:

希望这对您有所帮助。

关于python-3.x - Basemap 中的 drawparallels 参数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50362295/



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭