Làm thế nào để tạo hai lô cạnh nhau bằng Python?


94

Tôi tìm thấy ví dụ sau trên matplotlib:

import numpy as np
import matplotlib.pyplot as plt


x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)

y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

plt.subplot(2, 1, 1)
plt.plot(x1, y1, 'ko-')
plt.title('A tale of 2 subplots')
plt.ylabel('Damped oscillation')


plt.subplot(2, 1, 2)
plt.plot(x2, y2, 'r.-')
plt.xlabel('time (s)')
plt.ylabel('Undamped')

plt.show()

Câu hỏi của tôi là: Tôi cần thay đổi điều gì để có các mảnh đất cạnh nhau?

Câu trả lời:


148

Thay đổi cài đặt vùng phụ của bạn thành:

plt.subplot(1, 2, 1)

...

plt.subplot(1, 2, 2)

Các tham số cho subplotlà: số hàng, số cột và vị trí phụ bạn hiện đang ở. Vì vậy, 1, 2, 1có nghĩa là "một hình 1 hàng, 2 cột: chuyển đến ô con đầu tiên." Sau đó 1, 2, 2có nghĩa là "một con số 1 hàng, 2 cột: chuyển đến ô thứ hai."

Bạn hiện đang yêu cầu bố cục 2 hàng, 1 cột (nghĩa là một ở trên cùng của cột kia). Thay vào đó, bạn cần yêu cầu bố cục 1 hàng, 2 cột. Khi bạn làm như vậy, kết quả sẽ là:

âm mưu cạnh nhau

Để giảm thiểu sự chồng chéo của các lô phụ, bạn có thể muốn thực hiện:

plt.tight_layout()

Trước buổi trình diễn. Năng suất:

âm mưu cạnh nhau gọn gàng hơn


45

Kiểm tra trang này: http://matplotlib.org/examples/pylab_examples/subplots_demo.html

plt.subplotslà tương tự. Tôi nghĩ nó tốt hơn vì nó dễ dàng hơn để thiết lập các thông số của hình. Hai đối số đầu tiên xác định bố cục (trong trường hợp của bạn là 1 hàng, 2 cột) và các tham số khác thay đổi các tính năng như kích thước hình:

import numpy as np
import matplotlib.pyplot as plt

x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(5, 3))
axes[0].plot(x1, y1)
axes[1].plot(x2, y2)
fig.tight_layout()

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


1
Có cách nào để làm cho cốt truyện rộng hơn và cao hơn không?
Heißenberg93

Ý tôi không phải là lời khen ngợi plt.xlim / ylim
Heißenberg93

5
Tôi sẽ đề nghị sử dụng plt.subplots. Bạn có thể chỉ định đối số figsizeđể xác định kích thước của hình. Như trong plt.subplots(1, 2, figsize=(20, 4)). Nếu không, trước tiên bạn có thể định nghĩa các con số và con số kích thước: plt.figure(figsize=(20, 4)).
busybear

Vì một số lý do, tôi nhận được dữ liệu trống khi cố gắng lưu "plt.savefig ('.... png')" vào ô con. Tôi đang nhập mã chính xác vào đầu (tôi chỉ thêm plt.figure (figsize = (7, 3))).
Heißenberg93

Bạn đang gọi plt.savefigsau plt.show? Nếu vậy, đó có thể là vấn đề của bạn.
busybear
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.