Matplotlib ระดับสูง

แกน y สองแกนด้วย twinx

วาดสองค่าที่ต่างหน่วยในกราฟเดียวโดยใช้แกน y ที่สองจาก ax.twinx

บทนำ

ปริมาณฝนเป็นมิลลิเมตรกับอุณหภูมิเป็นองศาใช้สเกลเดียวกันไม่ได้ ถ้าอยู่บนแกนเดียว ค่าหนึ่งจะดูแบน ax.twinx สร้าง Axes ที่สองที่ใช้แกน x ร่วมกันแต่มีแกน y ของตัวเองทางขวา

ax1 วาดแท่งปริมาณฝนโดยมีแกน y ทางซ้าย ax2 = ax1.twinx() ใช้เดือนร่วมกันแต่ได้แกน y ใหม่ทางขวาสำหรับอุณหภูมิ การใส่สีป้ายแกนให้ตรงกับข้อมูลบอกผู้อ่านว่าแกนไหนเป็นของชุดข้อมูลใด ใช้สองแกนเท่าที่จำเป็น เพราะผู้อ่านอาจตีความการเปรียบเทียบสองชุดข้อมูลผิดได้ง่าย

ตัวแสดงภาพแบบโต้ตอบ

ปิดแกน y ที่สองเพื่อดูว่ามันช่วยอย่างไร เมื่อใช้สเกลเดียวกัน เส้นอุณหภูมิจะแบนติดด้านล่าง

ตัวอย่าง Matplotlib ที่รันได้

Matplotlib
รันโค้ด →
main.py
import matplotlib.pyplot as plt

months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
temperature = [3, 5, 9, 14, 18, 22, 25, 24, 20, 14, 8, 4]
rain = [60, 50, 55, 45, 60, 70, 80, 85, 60, 75, 80, 70]

fig, ax1 = plt.subplots(figsize=(7, 4))
ax1.bar(months, rain, color="tab:blue", alpha=0.4)
ax1.set_ylabel("Rain (mm)", color="tab:blue")

ax2 = ax1.twinx()
ax2.plot(months, temperature, color="tab:red", marker="o")
ax2.set_ylabel("Temperature (°C)", color="tab:red")
ax1.set_title("Climate in one chart")
plt.show()
สร้างปุ่ม Run สำหรับตัวอย่างนี้ กราฟที่โค้ดนี้วาด
แกน y สองแกนด้วย twinx