เมื่อสร้าง Subplots หลายแถว อาจต้องการซ่อน Tick Label แรกและสุดท้ายของแกน Y เพื่อลดการทับซ้อน บทความนี้ใช้ plt.setp() กับ visible=False
ขั้นตอน
- ตั้งค่าขนาด Figure
- สร้าง Subplots 2 แถว (sharex=True)
- วนลูปผ่าน Axes แต่ละอัน
- ซ่อน Tick Label แรกและสุดท้ายของแกน Y
- แสดงผล
ตัวอย่างโค้ด
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, ax = plt.subplots(2, sharex=True)
for a in ax:
# ซ่อน Tick Label แรก (index 0)
plt.setp(a.get_yticklabels()[0], visible=False)
# ซ่อน Tick Label สุดท้าย (index -1)
plt.setp(a.get_yticklabels()[-1], visible=False)
plt.show()
การประยุกต์ใช้เพิ่มเติม
# ซ่อนเฉพาะ Subplot แรก
plt.setp(ax[0].get_yticklabels()[0], visible=False)
# ซ่อนทุก n tick labels
for i, label in enumerate(a.get_yticklabels()):
if i % 2 == 0: # ซ่อนคู่
label.set_visible(False)
# ซ่อนโดยใช้ Slice
plt.setp(a.get_yticklabels()[1:-1], visible=True) # แสดงแค่กลาง
ผลลัพธ์
Subplots 2 แถว แกน Y ซ่อนตัวเลขแรกและสุดท้าย ทำให้ดูสะอาดขึ้นเมื่อ Subplots อยู่ติดกัน