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

Vẽ điểm mờ (blurred points) trong Matplotlib

Để vẽ điểm mờ (blurred points) trong Matplotlib:

  • Thiết lập kích thước figure và padding
  • Tạo figure mới
  • Thêm ax1, vẽ marker đại diện
  • Đặt tỷ lệ trục, tắt axes
  • Lưu marker ra file, load lại để làm blurred image
  • Đóng figure cũ
  • Tạo figure mới fig2
  • Tạo dữ liệu ngẫu nhiên x, y
  • Áp dụng Gaussian filter làm mờ, thêm artist lên axes
  • Đặt tỷ lệ trục
  • Hiển thị bằng show()

Ví dụ mã nguồn

import matplotlib.pyplot as plt
from scipy import ndimage
from matplotlib.image import BboxImage
from matplotlib.transforms import Bbox, TransformedBbox
import numpy as np

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

fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
ax1.plot(0.5, 0.5, 'd', ms=200)
ax1.set_ylim(0, 1)
ax1.set_xlim(0, 1)
plt.axis('off')
fig1.savefig('marker.png')
marker = plt.imread('marker.png')
plt.close(fig1)

fig2 = plt.figure()
ax2 = fig2.add_subplot(111)
x = 8 * np.random.rand(10) + 1
y = 8 * np.random.rand(10) + 1
sigma = np.arange(10, 60, 5)
for xi, yi, sigmai in zip(x, y, sigma):
    markerBlur = ndimage.gaussian_filter(marker, sigmai)
    bb = Bbox.from_bounds(xi, yi, 1, 1)
    bb2 = TransformedBbox(bb, ax2.transData)
    bbox_image = BboxImage(bb2, norm=None, origin=None, clip_on=False)
    bbox_image.set_data(markerBlur)
    ax2.add_artist(bbox_image)
ax2.set_xlim(0, 10)
ax2.set_ylim(0, 10)
plt.show()

Kết quả

10 điểm hình thoi (diamond) với độ mờ tăng dần (sigma 10→55), tạo hiệu ứng depth/blur.

Vẽ điểm mờ (blurred points) trong Matplotlib

Kỹ thuật: Render marker → save image → Gaussian blur → BboxImage placement. Phức tạp nhưng cho kiểm soát chính xác.