Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tô màu giao điểm của các hình tròn/đoạn (patches) trong Matplotlib


Để tô màu riêng cho phần giao nhau của hai hình tròn (hoặc patches) trong Matplotlib, bạn có thể kết hợp thư viện Shapely và Descartes:

  • Thiết lập kích thước hình vẽ và khoảng đệm.
  • Tạo hai điểm a và b làm tâm hình tròn.
  • Tạo buffer (vùng đệm) quanh mỗi điểm để thành hình tròn.
  • Tính toán các vùng: left (chỉ a), right (chỉ b), middle (giao nhau).
  • Lấy trục hiện tại bằng gca().
  • Thêm các patch với màu sắc khác nhau cho từng vùng.
  • Đặt giới hạn trục, tỷ lệ khung hình bằng nhau và ẩn trục.
  • Hiển thị hình vẽ.

Ví dụ minh họa

import shapely.geometry as sg
import matplotlib.pyplot as plt
import descartes

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

a = sg.Point(-.5, 0).buffer(1.)
b = sg.Point(0.5, 0).buffer(1.)

left = a.difference(b)
right = b.difference(a)
middle = a.intersection(b)

ax = plt.gca()
ax.add_patch(descartes.PolygonPatch(left, fc='b', ec='k'))
ax.add_patch(descartes.PolygonPatch(right, fc='r', ec='k'))
ax.add_patch(descartes.PolygonPatch(middle, fc='g', ec='k'))

ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)
ax.set_aspect('equal')
ax.axis('off')
plt.show()

Kết quả đầu ra

Tô màu giao điểm của các hình tròn/đoạn (patches) trong Matplotlib