Python/Matplotlib 极坐标图多边形反向填充
目前我有一个脚本,可以生成一个极坐标图,显示方位角和半径的数据。"R1" 只是一个简单的值列表,包含了从ArcGIS表格中得到的 [方位角, 倾斜角]。
import matplotlib.pyplot as plt
import numpy as np
for(a,r) in R1:
angles.append(a)
radius.append(90-r)
theta = np.radians(angles)
r = radius
ax = plt.subplot(111,polar=True)
ax.plot(theta, r, color='black', ls='-', linewidth=1)
ax.fill(theta,r,'0.75') ## should I use ax.fill_betweenx() ?
ax.set_theta_zero_location('N')
ax.set_theta_direction(-1)
ax.set_rmax(90)
ax.set_rmin(0)
ax.set_yticks(range(0,90,10))
yLabel=['90','','','60','','','30','','','']
ax.set_yticklabels(yLabel)
ax.grid(True)
plt.show()
现在这个脚本生成了如下的图:
我想知道怎么把填充的颜色反转,也就是说,原本填充成灰色的地方变成白色,而原本是白色的地方变成灰色。
我试过用 ax.fill_betweenx(theta,90,r,color='0.75'),但是没有成功。我已经为这个问题挣扎了一段时间了,还是没有解决。
任何帮助或建议都非常感谢!
如果我可以让这个问题更清楚,请在评论中告诉我。
1 个回答
3
根据你后面想做的事情,最快的方法就是把背景设置成灰色,填充部分设置成白色:
import matplotlib.pyplot as plt
import numpy as np
ax = plt.subplot(111, polar=True)
theta = np.linspace(0, 2*np.pi, 100)
r = 2 + np.sin(theta * 2)
ax.patch.set_facecolor('0.5')
ax.plot(theta, r, color='black', ls='-', linewidth=1)
ax.fill(theta,r,'w')
plt.show()
plt.draw() # just to be safe!