用matplotlib的fill_between函数填充两个极坐标曲线之间的区域

9
我有一种感觉,我可能会因为这个问题而扇自己一个耳光。但是我正在尝试填补两个极坐标函数 r = 4 sin(2θ)r = 2公共区域。看来我得到的与我想要的相反。有什么想法?
import numpy as np
import matplotlib.pyplot as plt

theta = np.arange(0, 2, 1./180)*np.pi
r = abs(4*np.sin(2*theta))
r2 = 2 + 0*theta

plt.polar(theta, r, lw=3)
plt.polar(theta, r2, lw=3)
plt.fill_between(theta, r, r2, alpha=0.2)
plt.show()

Polar Plot

1个回答

11

可以计算r和r2的最小值,然后在0和该最小值之间进行填充:

import numpy as np
import matplotlib.pyplot as plt

theta = np.arange(0, 2, 1./180)*np.pi
r = abs(4*np.sin(2*theta))
r2 = 2 + 0*theta
r3 = np.minimum(r, r2)
plt.polar(theta, r, lw=3)
plt.polar(theta, r2, lw=3)
plt.fill_between(theta, 0, r3, alpha=0.2)
plt.show()

在此输入图像描述


2
太好了。谢谢你。(拍了一下额头) - Brian W.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接