当前位置: 首页 > 面试题库 >

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

云宝
2023-03-14
问题内容

以下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')

生成图:

极地图

但是,我希望它会产生:

预期极地图

r(θ)的负值似乎已被裁剪。如何使matplotlib绘制r(theta)的负值?


问题答案:

第一个情节似乎是正确的。它只是不显示负值。可以通过明确设置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()

在此处输入图片说明



 类似资料:
  • 我的极坐标图是什么样子的 我试图移动ytick标签,使它们与轴标签类似地对齐。例如,'PTS'标签水平对齐到其轴,但ytick标签向右移动。 对于y值标签,我使用set_rgrids()函数指定角度和标签值,并使用tick_params()函数指定标签属性,如旋转。但是,此函数不允许我设置标签的文本框对齐。 如何将y值向左移动,使其直接位于相应的轴标签下? 完整代码:

  • 我试图绘制一个右扬升-赤纬,Python中的极地图,其中角度表示右扬升,半径赤纬,范围在±30之间。 我的代码是 很明显,我误解了极坐标图的工作原理,因为RA与θ=0的角度圆不对应。例如,我的一个点的RA=45.89度,但似乎没有一个点与此对应。 对我做错了什么有什么建议吗?

  • 我正在尝试对图像执行对数极坐标变换,以便进行图像配准。换句话说,我正在努力实现这一点:输入图像- 我需要用Java从头开始编写代码,因为我将使用OpenCL Java绑定在GPU端完成这项工作,而不能使用库。这方面有多个线程,但没有一个能真正帮助我,主要是因为它们都使用内置的MATLAB函数,我无法复制。 为了让它发挥作用,我一直在尝试Polar Transform而不是Log-Polar Tra

  • 我在将图像转换为极坐标时遇到问题。在Photoshop中很容易:)所以这对我来说是一个新领域。 我有以下图片: 结果应该是这样的: 我在这里看了一下,了解了一些基本知识,但仍然对圆的平方有点困惑: 我几乎不知道如何重新绘制图像。还有一个警告:由于管理限制,我想避免使用像Numpy这样的外部库。

  • 我想知道是否有人帮助我理解如何将顶部图像转换为底部图像。以下链接中提供了这些图像。顶部图像采用笛卡尔坐标。底部图像是极坐标中的转换图像

  • 编辑:我决定把这个问题分成两部分,因为它实际上是两个问题:1。如何在MATLAB中绘制极曲面图(本问题)和2。如何将拟合极坐标数据点放入粗略(非极坐标)矩阵 我有一个包含某些灰色值(介于0和1之间的值)的矩阵。这些点存储在一个矩形矩阵中,但实际上数据点是通过旋转探测器获得的。这意味着我实际上有极坐标(我知道起始矩阵中每个像素的极坐标)。 我想制作一个数据点的极线图。我有下面的例子。 因为MATLA