Python 使用matplotlib绘制负半径函数的极坐标图

Python 使用matplotlib绘制负半径函数的极坐标图,python,matplotlib,polar-coordinates,Python,Matplotlib,Polar Coordinates,下面的python代码应该在[-pi/2,pi/2]范围内绘制r(θ)=θ 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') 这将生成以下绘图: 然而,我希望它能产生: r(θ)的负值似乎被截断了。如何使matplotl

下面的python代码应该在[-pi/2,pi/2]范围内绘制r(θ)=θ

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')
这将生成以下绘图:

然而,我希望它能产生:


r(θ)的负值似乎被截断了。如何使matplotlib绘制r(θ)的负值?

第一个图似乎正确。它只是不显示负值。这可以通过明确设置r轴的限制来克服

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.ylim(theta.min(),theta.max())
plt.yticks([-1, 0,1])
plt.show()

这种行为基于这样一种假设,即任何数量都应该可以绘制在极坐标图上,这可能有助于解决有关相对数量的技术问题。例如,有人可能会问周期系统中某个量与其平均值的偏差。在这种情况下,matplotlib使用的约定非常适合

从更数学(理论)的角度来看,人们可能会认为负半径是原点上的点反射。为了复制这种行为,需要将负
r
值的点旋转π。因此,问题的预期图形可以通过以下代码再现

import matplotlib.pyplot as plt
import numpy as np

theta = np.linspace(-np.pi / 2, np.pi / 2, 64 + 1)
r = theta

plt.polar(theta+(r<0)*np.pi, np.abs(r))

plt.show()
导入matplotlib.pyplot作为plt
将numpy作为np导入
θ=np.linspace(-np.pi/2,np.pi/2,64+1)
r=θ

plt.polar(θ+(r第一个图似乎正确。它只是没有显示负值。这可以通过明确设置r轴的限制来克服

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.ylim(theta.min(),theta.max())
plt.yticks([-1, 0,1])
plt.show()

这种行为基于这样一种假设,即任何数量都应该可以绘制在极坐标图上,这可能有助于解决有关相对数量的技术问题。例如,可以询问周期系统中数量与其平均值的偏差。在这种情况下,matplotlib使用的约定非常适合

从更数学(理论)的角度来看,人们可能会认为负半径是原点上的点反射。为了复制这种行为,需要将负
r
值的点旋转π。因此,问题中的预期图形可以通过以下代码复制

import matplotlib.pyplot as plt
import numpy as np

theta = np.linspace(-np.pi / 2, np.pi / 2, 64 + 1)
r = theta

plt.polar(theta+(r<0)*np.pi, np.abs(r))

plt.show()
导入matplotlib.pyplot作为plt
将numpy作为np导入
θ=np.linspace(-np.pi/2,np.pi/2,64+1)
r=θ

极坐标(θ)+(像这个问题这样的书从来没有结束过。@Alexander Kleinhans这个问题是关于一个不同的问题。它讨论的问题是无法有一个负半径值的网格,而不是无法绘制负半径值。我不确定这个链接的问题是否真的相关,但如果是的话,我想现在已经解决了。看起来这个问题从来没有解决过。@Alexander Kleinhans这个问题是关于一个不同的问题。它讨论的问题是无法为负半径值绘制网格,而不是无法绘制负半径值。我不确定这个链接的问题是否真的相关,但如果是这样的话,我想现在已经解决了。它看起来应该像e预期的绘图,因为负半径与反方向的正半径相同。与wolfram alpha相比:这是一个很好的通用解决方案,但有点像hackey。我意识到可能没有,我更希望有一些设置可以切换。它应该看起来像预期的绘图,因为负半径是与相反方向的正半径相同。与wolfram alpha相比:这是一个很好的通用解决方案,但有点像黑客。我意识到可能没有,我更希望有一些设置可以切换。