python - matplotlib:如何在给定的一组半径处绘制同心圆

标签 python matplotlib

我想在距源的一组给定距离处绘制同心圆。我尝试做的第一件事是在极坐标图上画一条弧线,因为这似乎是合乎逻辑的子步骤:

import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.plot([1.0,1.5], [5,5], color='r', linestyle='-')
plt.show()

我遇到的第一个问题是它画的是直线而不是弧线:

polar with straight line

因此子问题可能是如何在极坐标图上以给定半径绘制弧线,在本例中为 360 度弧线?。另一方面,可能有一个更好的解决方案,也许不涉及极坐标图。最终,如标题所示,我的目标是围绕中心源以一组半径绘制同心圆。

最佳答案

很简单,随时用它来制作射击目标。:

ax.plot(np.linspace(0, 2*np.pi, 100), np.ones(100)*5, color='r', linestyle='-')

想想如何在极轴上定义圆?需要两个东西,角度和半径。此处为 np.linspace(0, 2*np.pi, 100)np.ones(100)*5。如果您只需要弧,请将第一个参数更改为小于 0 到 2pi 的值。并相应地更改第二个参数。

enter image description here 还有其他方法可以做到这一点。 plot() 创建 .lines.Line2D object 对象,如果你想要 .collections.PathCollection object 而不是 Line2D:

ax.scatter(1, 0, s=100000, facecolors='none')

或者你想制作补丁:

ax.bar(0, 5, 2*np.pi, bottom=0.0, facecolor='None') #need to modified the edge lines or won't look right

关于python - matplotlib:如何在给定的一组半径处绘制同心圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19130991/

相关文章:

python - 圆形变成椭圆形 - 在 Python 中设置长宽比

python - Matplotlib:流图的线宽键?

python - 在使用 pandas plot 方法创建的图表上格式化 x 轴

python - Cython:如何制作具有不同签名的函数数组

python - pandas groupby 并计算相同的列值

python - 在 Python 和 matplotlib 中连接 3D 散点图中的两个点

Python for 循环在 3D 时总是绘制同一条线(使用 matplotlib)

python - Pandas 合并_asof : ambiguous argument types error

python - 在 Python 中解析和清理商店营业时间的文本 block

python - Numpy 直方图箱之间没有边界