返回顶部
首页 > 资讯 > 精选 >如何使用 matplotlib.pyplot.contourf 绘制密度数组
  • 475
分享到

如何使用 matplotlib.pyplot.contourf 绘制密度数组

overflow 2024-02-12 22:02:15 475人浏览 独家记忆
摘要

问题内容 我有一个名为 dens 的 xarray 数据集,我想绘制它。 这是数据集: dimensions: (time: 641, lat: 30, lon: 30) coor

问题内容

我有一个名为 dens 的 xarray 数据集,我想绘制它。

这是数据集:


dimensions:  (time: 641, lat: 30, lon: 30)
coordinates:
  * time     (time) datetime64[ns] 2013-07-01t12:00:00 ... 2013-08-02t12:00:00
  * lon      (lon) float64 32.73 32.83 32.94 33.05 ... 35.53 35.64 35.75 35.85
  * lat      (lat) float64 31.08 31.27 31.47 31.66 ... 36.06 36.25 36.44 36.63
data variables:
    density  (time, lat, lon) float64 2e+03 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0

我正在使用命令

plt.contourf(dens.density.values[-1,:,:]);

绘制它并且它正在工作,但由于我希望海岸线也绘制在绘图上,所以我也尝试使用

m = basemap(llcrnrlon=data['lon'].min(), llcrnrlat=data['lat'].min(),
                urcrnrlon=data['lon'].max(), urcrnrlat=data['lat'].max(), resolution='i', suppress_ticks=1)
m.drawcoastlines();
m.fillcontinents(color='gray',lake_color='gray');

但是当我运行所有命令,然后运行 ​​plt.show() 时,等高线图消失,它向我显示的只是海岸线。

如何解决此问题以获得同一图中的等高线图+海岸线图?

抱歉,如果这是一个愚蠢的问题,但我对 python 还很陌生

感谢您的帮助,

尤塔姆

编辑:我现在才意识到我正在尝试组合两个不同的“工具包”,并且有可能仅使用底图工具包来完成所有这些操作,但只是尝试写

m.contourf(dens.density.values[-1,:,:]);

给我这个错误:

---------------------------------------------------------------------------
typeerror                                 traceback (most recent call last)
cell in[21], line 1
----> 1 m.contourf(dens.density.values[-1,:,:])

typeerror: basemap.contourf() missing 2 required positional arguments: 'y' and 'data'

另一个编辑:我不断发现更多的东西,在阅读了 basemap 的文档后,我意识到命令的语法应该是这样的

m.contourf(dens.lon.values,dens.lat.values,dens.密度.values[-1,:,:]);

但现在我收到此错误:

IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed

我猜这是因为我的密度数组是二维的,但是如何从中提取密度值?我在时间维度中使用 [-1],因为我实际上只需要最后一个时间步

再次提前致谢, 约塔姆

最后编辑

这是最终的情节,我怎样才能让周围的土地变成灰色而不是紫色?另外,有没有一种方法可以描述更大的地理区域,稍微大一点,而不弄乱数据?

这是我的实际数据的新数字


正确答案


使用底图和 xarray 进行绘图已在此处进行了讨论.

m = basemap(llcrnrlon=data['lon'].min(), llcrnrlat=data['lat'].min(),
            urcrnrlon=data['lon'].max(), urcrnrlat=data['lat'].max(), 
  resolution='i', suppress_ticks=1)
m.drawcoastlines();
m.fillcontinents(color='gray',lake_color='gray')
dens.density[-1,:,:].plot.contourf()
plt.show()

上面的代码应该可以工作。 我使用 cartopy 来处理海岸线和边界等功能。下面是可供您尝试使用数据集的工作代码片段。

import xarray as xr
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cf

ds = xr.open_dataset('filename.nc')
fig = plt.figure(figsize=(8,8))
crs=ccrs.platecarree()
ax = fig.add_subplot(1,1,1, projection=crs)
gl = ax.gridlines(crs=crs, draw_labels=true,
                linewidth=0.01, color='gray', alpha=0.5, linestyle='-.')

ax.add_feature(cf.coastline.with_scale("50m"), lw=0.5)
ax.add_feature(cf.borders.with_scale("50m"), lw=0.3)

ds.density[-1,:,:].plot.contourf()
plt.show()

最后一次编辑

要将所有紫色(零)设置为白色,您可以使用以下 cmap。

from matplotlib.colors import LinearSegmentedColORMap
cm = LinearSegmentedColormap.from_list('', ['white', *plt.cm.Blues(np.arange(255))])
ds.density[-1,:,:].plot.contourf(cmap=cm)

以上就是如何使用 matplotlib.pyplot.contourf 绘制密度数组的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 如何使用 matplotlib.pyplot.contourf 绘制密度数组

本文链接: https://lsjlt.com/news/563938.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用 matplotlib.pyplot.contourf 绘制密度数组
    问题内容 我有一个名为 dens 的 xarray 数据集,我想绘制它。 这是数据集: dimensions: (time: 641, lat: 30, lon: 30) coor...
    99+
    2024-02-12
    overflow
  • 如何使用matplotlib绘制栅格数据
    要使用matplotlib绘制栅格数据,可以按照以下步骤进行操作:1. 导入matplotlib库和numpy库:```python...
    99+
    2023-09-20
    matplotlib
  • 如何使用canvas绘制圆
    如何使用canvas绘制圆?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。arc语法:arc(x, y, radius, startAngle, endAngle, anti...
    99+
    2023-06-09
  • python怎么使用seaborn绘制直方图,密度图,散点图
    本文小编为大家详细介绍“python怎么使用seaborn绘制直方图,密度图,散点图”,内容详细,步骤清晰,细节处理妥当,希望这篇“python怎么使用seaborn绘制直方图,密度图,散点图”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-07-02
  • 如何使用JavaScript绘制图像
    本篇内容主要讲解“如何使用JavaScript绘制图像”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用JavaScript绘制图像”吧!   ...
    99+
    2024-04-02
  • 如何使用Uniapp绘制横线
    在Uniapp中想要绘制一条横线并不难,通过一些简单的代码就可以实现绘制横线的操作。如果你想学习如何使用Uniapp绘制横线,请跟随本文学习。一、使用CSS绘制横线我们可以通过在标签中使用CSS来绘制横线。通过以下代码片段,我们可以轻松地在...
    99+
    2023-05-14
  • 使用Ajax实现进度条的绘制
    使用:Easy Mock创建api接口 注意:若弹出该invalid or unexpected token错误提示信息,说明编写的数据格式有问题,修改为正确格式即可创建成。随后可...
    99+
    2024-04-02
  • WPF使用DrawingContext实现绘制刻度条
    WPF 使用 DrawingContext 绘制刻度条 框架使用大于等于.NET40;Visual Studio 2022;项目使用 MIT 开源许可协议;定义I...
    99+
    2024-04-02
  • JavaScript如何用el-table实现绘制热度表
    本篇内容介绍了“JavaScript如何用el-table实现绘制热度表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!实现效果实现代码<...
    99+
    2023-07-05
  • 如何使用纯html5绘制时钟
    这篇文章主要介绍如何使用纯html5绘制时钟,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一起看下效果图:  实现的代码。  htm代码:XML/HTML Code复制内容到剪贴板&...
    99+
    2024-04-02
  • 如何使用html5Canvas绘制线条closePath()
    这期内容当中小编将会给大家带来有关如何使用html5Canvas绘制线条closePath(),文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码如下:$(function...
    99+
    2024-04-02
  • html如何使用SVG绘制文本
    这篇文章给大家分享的是有关html如何使用SVG绘制文本的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 您也可以使用SVG在网页上绘制文本。SVG中的文本呈现为图形,因此您可以...
    99+
    2024-04-02
  • html如何使用canvas绘制文本
    这篇文章主要为大家展示了“html如何使用canvas绘制文本”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html如何使用canvas绘制文本”这篇文章吧。 ...
    99+
    2024-04-02
  • 如何使用Python VTK绘制线条
    主要函数介绍: vtk.vtkPoints() 在VTK中用于定义点的类,使用points.InsertPoint(index, x, y, z) 即可插入点集。...
    99+
    2024-04-02
  • 如何使用Python 绘制瀑布图
    目录前言瀑布图瀑布图使用条件举个例子Plotly 绘制瀑布图参数设置完整代码Matplotlib绘制瀑布图总结前言 在日常生活中,我们的工作有时候需要对数据进行可视化,让它一图标之类...
    99+
    2024-04-02
  • 如何使用CSS绘制三角形
    如何使用CSS绘制三角形?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 实现一个简单的三角形使用CSS盒模型中的border(边框)即可实现如下所示的三角形:CSS实现简单...
    99+
    2023-06-08
  • Python如何绘制对数函数
    在Python中使用matplotlib模块和numpy模块绘制对数函数图像,具体方法如下:import matplotlib.pyplot as pltimport numpy as npx=np.arrange(-5,5,0.01)y=...
    99+
    2024-04-02
  • Android如何绘制仪表盘指针刻度
    这篇文章将为大家详细讲解有关Android如何绘制仪表盘指针刻度,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。效果图:表盘的绘制重点有两点:表盘刻度的绘制2.表盘指针旋转到指定刻度的实现表盘刻度的绘制刻度...
    99+
    2023-06-15
  • 如何使用canvas绘制超炫时钟
    这篇文章主要介绍“如何使用canvas绘制超炫时钟”,在日常操作中,相信很多人在如何使用canvas绘制超炫时钟问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用canv...
    99+
    2024-04-02
  • 如何使用HTML5的Canvas绘制曲线
    这篇文章主要讲解了“如何使用HTML5的Canvas绘制曲线”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用HTML5的Canvas绘制曲线”吧!Ca...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作