matplotlib 地转风图

数据挖掘 Python
2022-03-08 08:46:08

我正在做一个作业,教如何使用 Python 使用 matplotlib 进行绘图和标记。科学或数学不是我的背景。我已经得到了计算地转风的公式,我们将把它(在 y 轴上)与 x 轴上的纬度作图。

我知道如何绘制一个 x 和一个 y。除此之外,鉴于我缺乏该领域的背景,这个公式对我来说没有意义。

地转风公式

此外,还有一个将符号转换为正确 python 代码的键,但我不知道符号的英文名称,这使得它非常困难。

例如,给我

r'$x^{10}$'
r'$R_^{final}$'
r'$alpha^{\eta}$' 

前两个是上标和下标。我明白了。但这对我不知道的公式计算有什么帮助。

我也被赋予了要放入公式的值。对操作顺序的解释会有所帮助。如果,g0=9.81 ms-‐2;ΔZ=60m;Δn=2x10^5m;f=2Ωsin(φ)

我的问题是如何将值放入公式中,然后将它们绘制在 matplotlib 中?像 x 和 y 一样简单吗?

2个回答

您的答案不正确,因为轴被翻转并且没有绘制整条线。

这是我正在寻找的正确答案。

import matplotlib.pyplot as plt 
import numpy as np

# define the parameters
g = -9.81 # m/s^2
dZ = 60 # m
dx = 2e5 # m
omega = 7.2921e-5 # rad/s
phi = np.linspace(10,90) # deg
f = 2 * omega * np.sin(np.radians(phi)) # coriolis frequency, s^-1

# compute geostrophic wind, x-component
u_g = -1. * g/f * dZ/dx

# plot phi vs V_g
fig, ax = plt.subplots()
ax.plot(phi, u_g, color='#FF33CC')
ax.set_xlabel('$\phi$')
ax.set_ylabel('$V_{g}$ (m $s^-1$)')
plt.title('Geostrophic Wind vs. Latitude')
plt.show()

让我先说:我不知道这对 Data Science StackExchange 有多合适。但我还不能发表评论,我想我可以提供答案,所以就这样吧。


将值放入公式中。数量是:

  • g0:标准重力(9.81 m/s2);
  • ΔZ : 一定距离内位势高度的变化;
  • Δn的距离ΔZ
  • f:科里奥利参数,测量转速
  • ϕ : 选择的纬度。

您编写了将科里奥利参数与纬度和 s联系起来的方程式。我们先计算这部分。我假设a)您可以将numpy与matplotlib一起使用,并且b)您被要求将地转风绘制为纬度的函数。将其输入 Python 的一种方法是编写:fΩ=7.29×1051

> import numpy as np
> phi = np.arange(10, 91)
> Omega = 7.29e-5
> coriolis = 2 * Omega * np.sin(phi * np.pi/180)

第二行为您提供了一个 numpy 纬度数组,以度为单位,从 10N 到 90N。我忽略了热带,因为那里的地转风没有很好的定义。的 numpy 数组请注意, np.sin 的参数应该以弧度为单位,而不是度数。f=0f

这样做之后,其余的值就很容易输入了。对于运算顺序,请确保分子中的所有内容都分组在一起,并且分母相同。你得到:

> grav, dz, dn = 9.81, 60.0, 2.0e5
> VGeo = (grav * dz) / (coriolis * dn)

第一行使用一系列值来设置重力 ( )、dz 和 dn。第二行为定义了一个 numpy 数组,其中分子和分母分组。g0Vg


绘制结果。我不知道您对 matplotlib 的工作原理有多熟悉。如果这没有意义,请告诉我,我可以扩展它。许多纬度变化的图在 y 轴上都有纬度,因为这是地球仪和地图的方向。因此,当您绘制值的图时,应该是应该是使用 pyplot 的带有一些标签的工作示例可能是:(x,y)yϕxVg

> import matplotlib.pyplot as plt
> fig, ax = plt.subplots()
> ax.set_ylim(0,90)
> ax.set_xlim(0,125)
> ax.plot(VGeo, phi, linestyle='-', color='k')
> ax.set_ylabel('Latitude $\phi$')
> ax.set_xlabel('Wind $V_g$')
> ax.set_title('Geostrophic wind $V_g = \frac{g_0 \Delta z}{f \Delta n}$')
> fig.savefig('test.png', format='png')

我在这里做几件事。第二行使用 plt.subplots() 创建一个图形和轴;没有任何参数,这将返回一个轴。接下来,我设置 x 和 y 限制,以便我们看到所有数据,并且 y 轴从赤道开始(即使我们没有绘制 10N 以南的值,我认为它看起来更好) . 然后我只是用黑色实线接下来的三行涉及使用 TeX 格式创建标签。最后一行是将图形保存到本地 PNG 文件。(x,y)=(Vg,ϕ)

让我知道它是如何工作的!