Vae*_*lus 7 python matplotlib polar-coordinates
以下 python 代码应在范围 [-pi/2, pi/2] 上绘制 r(theta) = theta。
import matplotlib.pyplot as plt
import numpy
theta = numpy.linspace(-numpy.pi / 2, numpy.pi / 2, 64 + 1)
r = theta
plt.polar(theta, r)
plt.savefig('polar.png')
Run Code Online (Sandbox Code Playgroud)
这产生了情节:
但是,我希望它能产生:
r(theta) 的负值似乎被剪裁了。如何使 matplotlib 绘制 r(theta) 的负值?
第一个情节似乎是正确的。它只是不显示负值。这可以通过明确设置 r 轴的限制来克服。
\n\nimport matplotlib.pyplot as plt\nimport numpy\n\ntheta = numpy.linspace(-numpy.pi / 2, numpy.pi / 2, 64 + 1)\nr = theta\n\nplt.polar(theta, r)\nplt.ylim(theta.min(),theta.max())\nplt.yticks([-1, 0,1])\nplt.show()\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n这种行为基于这样的假设:任何数量都应该可以绘制在极坐标图上,这可能有利于解决有关相对数量的技术问题。例如,人们可能会询问周期系统中某个量与其平均值的偏差。在这种情况下,matplotlib 使用的约定非常适合。
\n\n从更数学(理论)的角度来看,人们可能会认为负半径是原点上的点反射。为了复制这一行为,需要旋转负数点r\xcf\x80。因此,可以通过以下代码重现问题的预期图表
import matplotlib.pyplot as plt\nimport numpy as np\n\ntheta = np.linspace(-np.pi / 2, np.pi / 2, 64 + 1)\nr = theta\n\nplt.polar(theta+(r<0)*np.pi, np.abs(r))\n\nplt.show()\nRun Code Online (Sandbox Code Playgroud)\n\n\n
| 归档时间: |
|
| 查看次数: |
4732 次 |
| 最近记录: |