Tôi đang tìm cách vẽ các hình chữ nhật được tô đầy trên Bản đồ cơ sở. Tôi có thể dễ dàng vẽ các cạnh của hình chữ nhật bằng cách sử dụng phương pháp drawgreatcircle
, nhưng tôi không thể tìm thấy cách để thực sự lấp đầy các hình chữ nhật này (chỉ định màu và alpha).Cách vẽ hình chữ nhật trên Bản đồ cơ sở
Trả lời
Bạn có thể thêm trực tiếp matplotlib.patches.Polygon() vào trục của mình. Câu hỏi đặt ra là liệu bạn có muốn các hình chữ nhật của bạn xác định tọa độ lô (các đường thẳng trên ô) hay trong các tọa độ bản đồ (các vòng tròn lớn trên ô). Dù bằng cách nào, bạn chỉ định các đỉnh trong tọa độ bản đồ và sau đó chuyển đổi chúng thành tọa độ lô bằng cách gọi bản đồ cơ sở (m()
trong ví dụ bên dưới), tự tạo Polygon và thêm nó theo cách thủ công vào trục được hiển thị.
Đối với hình chữ nhật được định nghĩa trong âm mưu phối, đây là một ví dụ:
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
def draw_screen_poly(lats, lons, m):
x, y = m(lons, lats)
xy = zip(x,y)
poly = Polygon(xy, facecolor='red', alpha=0.4)
plt.gca().add_patch(poly)
lats = [ -30, 30, 30, -30 ]
lons = [ -50, -50, 50, 50 ]
m = Basemap(projection='sinu',lon_0=0)
m.drawcoastlines()
m.drawmapboundary()
draw_screen_poly(lats, lons, m)
plt.show()
Đối với hình chữ nhật quy định tại tọa độ bản đồ, sử dụng phương pháp tương tự, nhưng suy đường của bạn trong không gian bản đồ trước khi chuyển để vẽ tọa độ. Đối với mỗi đoạn thẳng, bạn sẽ phải làm:
lats = np.linspace(lat0, lat1, resolution)
lons = np.linspace(lon0, lon1, resolution)
Sau đó, chuyển đổi những bản đồ tọa độ để vẽ tọa độ (như trên, với m()
) và một lần nữa tạo ra một Polygon với phối cốt truyện.
Câu trả lời tương tự ở trên, nhưng mã cơ bản hơn:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
map = Basemap(projection='cyl')
map.drawmapboundary(fill_color='aqua')
map.fillcontinents(color='coral',lake_color='aqua')
map.drawcoastlines()
x1,y1 = map(-25,-25)
x2,y2 = map(-25,25)
x3,y3 = map(25,25)
x4,y4 = map(25,-25)
poly = Polygon([(x1,y1),(x2,y2),(x3,y3),(x4,y4)],facecolor='red',edgecolor='green',linewidth=3)
plt.gca().add_patch(poly)
plt.show()
- 1. Vẽ hình chữ nhật trên một JPanel
- 2. Vẽ hình chữ nhật trên picturebox - cách giới hạn diện tích hình chữ nhật?
- 3. Vẽ Hình chữ nhật Xoay
- 4. C# vẽ hình chữ nhật trên hình tượng?
- 5. OpenGL vẽ đường viền hình chữ nhật
- 6. Vẽ Bản đồ địa hình
- 7. Vẽ hình chữ nhật trong iOS
- 8. đồ họa lõi xoay hình chữ nhật
- 9. Đường viền vẽ hình chữ nhật WPF
- 10. Vẽ nhiều hình chữ nhật trong GDI +
- 11. Vẽ hình chữ nhật ở UIView
- 12. Một cách hiệu quả để vẽ hình chữ nhật gradient
- 13. Văn bản trung tâm Java trong hình chữ nhật
- 14. Vẽ một hình chữ nhật trong Direct X
- 15. Điền văn bản bên trong hình chữ nhật
- 16. JavaScript vẽ lược đồ cơ sở dữ liệu
- 17. Cập nhật lược đồ cơ sở dữ liệu
- 18. Vẽ hình chữ nhật đầy với đường viền trong android
- 19. Tôi có thể vẽ hình chữ nhật trong XML không?
- 20. OpenCV. Vẽ hình chữ nhật khi kết hợp
- 21. ImageMagick - Văn bản thành hình chữ nhật
- 22. Vẽ hình elip trên dự đoán sơ đồ nền matplotlib
- 23. Lỗi bản đồ hóa cơ sở Hbase
- 24. Vẽ sơ đồ thanh trên bản đồ bằng ggplot2?
- 25. Làm thế nào để vẽ một hình chữ nhật trên một khu vực cụ thể trong một đồ thị matplotlib
- 26. HTML5, JavaScript và vẽ nhiều hình chữ nhật trong canvas
- 27. Vẽ một hình chữ nhật điền với độ mờ thấp
- 28. Làm thế nào để vẽ hình chữ nhật?
- 29. Làm cách nào để vẽ văn bản trên canvas?
- 30. Nhân bản hình chữ nhật/mạng