我正在从GIS数据库读取数据,并使用mpl_toolkits.basemap和matplotlib创建地图。一些数据创建复杂的多边形(由外部和内部环定义)。但是,我一直无法找到如何创建带孔的多边形。这甚至可能与matplotlib?是否有另一种方法来创建这个图像?如何绘制复杂的多边形?
0
A
回答
1
老问题,但...
就明确地关闭您的内部和外部边界和它们一起求和。从技术上讲,会有一个接缝,但你不会看到它(如果你提供了一个颜色参数 - 不完全确定为什么这样)。
#!/usr/bin/env python3
import matplotlib.pyplot as plt
# a 4x4 box (counterclockwise)
ext_x = [2, -2, -2, 2, 2]
ext_y = [2, 2, -2, -2, 2]
# a 2x2 hole in the box (clockwise)
int_x = [item/2.0 for item in ext_x][::-1]
int_y = [item/2.0 for item in ext_y][::-1]
# if you don't specify a color, you will see a seam
plt.fill(ext_x+int_x, ext_y+int_y, color='blue')
plt.show()
0
fill_between()怎么样?
http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.fill_between
我不知道究竟是如何拉过一个多边形,但它的工作原理是这样
import numpy as np
import matplotlib.pylab as plt
x=np.arange(-3,3.5,.5)
y1=-x**2+9
y2=-x**2+10
plt.fill_between(x,y1,y2)
您应该能够建立你的身材一个fill_between一次直到你有你想要的。
或可能的path。看看这些screenshots,看看有没有什么东西似乎接近。
编辑:您可能意味着一个孔这样
import numpy as np
import matplotlib.pylab as plt
x=np.arange(-3,3.5,.5)
y1=-x**2+9
y2=0
plt.fill_between(x,y1,y2)
circ=plt.Circle((0,4),2,color='w')
ax=plt.gca()
ax.add_patch(circ)
plt.show()
4
实际上,您可以在matplotlib中绘制带有孔的多边形。诀窍是使用Path和PathPatch。例如:
import matplotlib.pyplot as plt
from matplotlib.patches import PathPatch
from matplotlib.path import Path
axes = plt.gca()
path = Path([(2,2) ,(2,-2) ,(-2,-2) ,(-2,2) ,(0,0) ,(1,0) ,(-1,1) ,(-1,-1) ,(0,0) ],
[Path.MOVETO,Path.LINETO,Path.LINETO,Path.LINETO,Path.CLOSEPOLY,Path.MOVETO,Path.LINETO,Path.LINETO,Path.CLOSEPOLY])
patch = PathPatch(path)
axes.set_xlim(-3,3)
axes.set_ylim(-3,3)
axes.add_patch(patch)
plt.savefig('example.png')
plt.close('all')
在this example上述结果(不能发布图像尚未)。 请注意,缠绕顺序似乎很重要。
相关问题
- 1. 复杂的多边形
- 2. 绘制多边形
- 3. 绘制多边形
- 4. 绘制多边形
- 5. 如何绘制多边形的d3.js
- 6. 如何绘制填充的多边形?
- 7. 绘制多边形PyQt的
- 8. 如何绘制填充多边形?
- 9. 如何用Python绘制多边形?
- 10. 如何使用OpenCV绘制多边形?
- 11. 如何用CGPath绘制多边形?
- 12. 如何在SDL中绘制多边形?
- 13. 如何用androidPlot库绘制多边形?
- 14. 如何使用iOS Quartz 2D绘图绘制复杂的形状?
- 15. glDrawElements绘制多边形
- 16. d3 Javascript - 绘制多边形
- 17. 绘制多边形形状的纹理
- 18. 在D3中绘制复杂的图形
- 19. KineticJS - 绘制复杂的形状
- 20. 复杂的多边形区域
- 21. 查找一个复杂的多边形
- 22. 分解复杂多边形的算法
- 23. ImageJ如何复制一个多边形
- 24. SVG中路径与多边形绘制的多边形示例
- 25. 如何绘制n个边的多边形,m次
- 26. 用gg多边形绘制矩形R
- 27. 覆盖matplotlib.artist.Artist绘制复杂形状
- 28. 在复杂平面上绘制图形
- 29. 如何创建绘制多边形的图形对象?
- 30. OpenGL的:如何绘制三角形或多边形平滑
这绝对会创建一个多边形,但不是一个带有洞的多边形。 –
我不认为我理解“洞”。我以为你的意思是空洞的。正如我想象的那样,洞的大小将取决于y2与y1的关系。 – Matt