các đường dọc & ngang trong matplotlib


122

Tôi không hoàn toàn hiểu tại sao tôi không thể tạo các đường ngang và dọc ở các giới hạn được chỉ định. Tôi muốn giới hạn dữ liệu bằng hộp này. Tuy nhiên, các bên dường như không tuân thủ hướng dẫn của tôi. Tại sao thế này?

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

nhập mô tả hình ảnh ở đây

Câu trả lời:


166

Các hàm pyplot mà bạn đang gọi axhline()axvline()vẽ các đường kéo dài một phần của phạm vi trục, bất kể tọa độ. Các tham số xminhoặc ymingiá trị sử dụng 0.0 làm giá trị nhỏ nhất của trục và 1.0 là giá trị lớn nhất của trục.

Thay vào đó, hãy sử dụng plt.plot((x1, x2), (y1, y2), 'k-')để vẽ một đường thẳng từ điểm (x1, y1) đến điểm (x2, y2) bằng màu k. Thấy chưa pyplot.plot.


3
matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.axhline <- tài liệu. Bạn nên chỉnh sửa câu trả lời của mình để đưa vào liên kết này
tacaswell

15
Một giải pháp khác để vẽ các đường ngang và dọc là sử dụng hlineshoặc vlines, tương ứng, vì điều này nhỏ hơn plotimo thông thường
sodd

20

Đây có thể là một vấn đề phổ biến đối với những người mới sử dụng Matplotlib để vẽ các đường dọc và ngang. Để hiểu vấn đề này, bạn nên biết rằng trong Matplotlib tồn tại các hệ tọa độ khác nhau .

Phương pháp axhlineaxvline được sử dụng để vẽ các đường tại các trục tọa độ . Trong hệ tọa độ này, tọa độ cho điểm dưới cùng bên trái là (0,0), trong khi tọa độ cho điểm trên cùng bên phải là (1,1), bất kể phạm vi dữ liệu của biểu đồ của bạn là bao nhiêu. Cả tham số xminxmaxđều nằm trong phạm vi [0,1].

Mặt khác, phương pháp hlinesvlines được sử dụng để vẽ các đường tại tọa độ dữ liệu . Phạm vi cho xminxmaxnằm trong phạm vi giới hạn dữ liệu của trục x.

Hãy lấy một ví dụ cụ thể,

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

Nó sẽ tạo ra âm mưu sau: nhập mô tả hình ảnh ở đây

Giá trị cho xminxmaxgiống nhau đối với phương thức axhlinehlines. Nhưng độ dài của dây chuyền sản xuất là khác nhau.


16

Nếu bạn muốn thêm hộp giới hạn, hãy sử dụng hình chữ nhật:

ax = plt.gca()
r = matplotlib.patches.Rectangle((.5, .5), .25, .1, fill=False)
ax.add_artist(r)

Rectangle doc

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.