Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีพลอทจุดเบลอ (Blurred Points) ใน Matplotlib


เพื่อพลอทจุดเบลอใน matplotlib:

  • ตั้งค่าขนาดรูปและปรับ padding
  • สร้าง figure ใหม่หรือเปิดใช้งาน figure ที่มีอยู่
  • เพิ่ม ax1 ลงใน figure เป็นส่วนของ subplot
  • สร้าง marker ที่จะทำให้เบลอ
  • ตั้งค่ามาตราส่วนแกน X และ Y ปิดแกน
  • บันทึก marker ในไฟล์ โหลดภาพนั้นมาพลอทหลังทำเบลอ
  • ปิด figure ก่อนหน้า fig1
  • สร้าง figure ใหม่ fig2
  • สร้างข้อมูลสุ่ม x และ y
  • ใช้ Gaussian filter ทำเบลอ เพิ่ม artist บน axes ปัจจุบัน
  • ตั้งค่ามาตราส่วนแกน X และ Y บน ax2
  • แสดงรูปด้วย show()

ตัวอย่าง

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()

ผลลัพธ์

วิธีพลอทจุดเบลอ (Blurred Points) ใน Matplotlib