เส้นแนวตั้งและแนวนอนใน matplotlib


122

ฉันไม่ค่อยเข้าใจว่าทำไมฉันไม่สามารถสร้างเส้นแนวนอนและแนวตั้งตามขีด จำกัด ที่กำหนดได้ ฉันต้องการผูกข้อมูลไว้ข้างกล่องนี้ อย่างไรก็ตามฝ่ายต่างๆดูเหมือนจะไม่ปฏิบัติตามคำแนะนำของฉัน ทำไมถึงเป็นแบบนี้?

# CREATING A BOUNDING BOX
# BOTTOM HORIZONTAL
plt.axhline(y=.4, xmin=0.25, xmax=0.402, linewidth=2, color = 'k')
# RIGHT VERTICAL
plt.axvline(x=0.402, ymin=0.4, ymax = 0.615, linewidth=2, color='k')
# LEFT VERTICAL
plt.axvline(x=0.1, ymin=0.58, ymax = 0.79, linewidth=2, color='k')
plt.show()

ใส่คำอธิบายภาพที่นี่

คำตอบ:


166

ฟังก์ชันไพล็อตที่คุณกำลังเรียกใช้axhline()และaxvline()ลากเส้นที่ครอบคลุมส่วนหนึ่งของช่วงแกนโดยไม่คำนึงถึงพิกัด พารามิเตอร์xminหรือyminใช้ค่า 0.0 เป็นค่าต่ำสุดของแกนและ 1.0 เป็นค่าสูงสุดของแกน

ให้ใช้plt.plot((x1, x2), (y1, y2), 'k-')การลากเส้นจากจุด (x1, y1) ไปยังจุด (x2, y2) ด้วยสี k แทน ดูpyplot.plot.


3
matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.axhline <- เอกสารประกอบ คุณควรแก้ไขคำตอบของคุณเพื่อรวมลิงก์นี้
tacaswell

15
อีกวิธีหนึ่งในการพล็อตเส้นแนวนอนและแนวตั้งคือการใช้hlinesหรือvlinesตามลำดับเนื่องจากเป็นเรื่องเล็กน้อยกว่าplotimo ทั่วไป
sodd

20

นี่อาจเป็นปัญหาทั่วไปสำหรับผู้ใช้ Matplotlib ใหม่ในการวาดเส้นแนวตั้งและแนวนอน เพื่อให้เข้าใจถึงปัญหานี้คุณควรจะตระหนักว่าระบบการประสานงานที่แตกต่างกันอยู่ใน Matplotlib

วิธีaxhlineและaxvlineจะใช้ในการวาดเส้นที่แกนประสานงาน ในระบบพิกัดนี้พิกัดสำหรับจุดล่างซ้ายคือ (0,0) ในขณะที่พิกัดสำหรับจุดขวาบนคือ (1,1) โดยไม่คำนึงถึงช่วงข้อมูลของพล็อตของคุณ ทั้งพารามิเตอร์xminและxmaxอยู่ในช่วง [0,1]

ในทางตรงกันข้ามวิธีhlinesและvlinesจะใช้ในการวาดเส้นที่ข้อมูลประสานงาน ช่วงสำหรับxminและxmaxอยู่ในช่วงขีด จำกัด ข้อมูลของแกน x

ลองดูตัวอย่างที่เป็นรูปธรรม

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 5, 100)
y = np.sin(x)

fig, ax = plt.subplots()

ax.plot(x, y)
ax.axhline(y=0.5, xmin=0.0, xmax=1.0, color='r')
ax.hlines(y=0.6, xmin=0.0, xmax=1.0, color='b')

plt.show()

มันจะสร้างพล็อตต่อไปนี้: ใส่คำอธิบายภาพที่นี่

ค่าสำหรับxminและxmaxเหมือนกันสำหรับaxhlineand hlinesmethod แต่ความยาวของสายการผลิตจะแตกต่างกัน


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.