เลย์เอาต์ซับซ้อนด้วย subplot_mosaic
สร้างรูปที่มีกราฟหลายขนาดด้วย plt.subplot_mosaic และอัตราส่วนความกว้างความสูง
บทนำ
plt.subplots สร้างตารางที่เท่ากันทุกช่อง แต่รูปจริงมักต้องการกราฟหลักขนาดใหญ่กับกราฟเล็ก ๆ รอบ ๆ plt.subplot_mosaic ให้คุณวาดเลย์เอาต์เป็นลิสต์ของแถว และตั้งชื่อให้แต่ละกราฟ
ลิสต์ด้านในแต่ละอันคือหนึ่งแถว และแต่ละชื่อคือหนึ่งกราฟ ชื่อที่ซ้ำหลายช่องจะกลายเป็นกราฟที่ใหญ่ขึ้น ส่วน "." เว้นช่องว่าง axes เป็นดิกชันนารี axes["main"] จึงเป็นกราฟกระจาย gridspec_kw กำหนดขนาดสัมพัทธ์ คอลัมน์หลักกว้างกว่าคอลัมน์ขวาสี่เท่า ฮิสโทแกรมที่ขอบแสดงการกระจายของ x และ y
ตัวแสดงภาพแบบโต้ตอบ
เลือกเลย์เอาต์และเปิดปิดอัตราส่วนขนาด ชื่อแต่ละชื่อใน mosaic จะกลายเป็นกราฟหนึ่งกราฟ
ตัวอย่าง Matplotlib ที่รันได้
Matplotlib
main.py
import matplotlib.pyplot as plt
import numpy as np
rng = np.random.default_rng(4)
x = rng.normal(size=300)
y = 0.6 * x + rng.normal(scale=0.8, size=300)
fig, axes = plt.subplot_mosaic([["top", "."], ["main", "right"]], figsize=(6, 6),
gridspec_kw={"width_ratios": [4, 1], "height_ratios": [1, 4]})
axes["main"].scatter(x, y, s=10, alpha=0.6)
axes["top"].hist(x, bins=30)
axes["right"].hist(y, bins=30, orientation="horizontal")
axes["top"].axis("off")
axes["right"].axis("off")
fig.suptitle("Scatter plot with marginal histograms")
plt.show()
