Có hai cách để vẽ biểu đồ ba biểu đồ đồng thời, nhưng cả hai đều không phải là những gì bạn đã yêu cầu. Để làm những gì bạn yêu cầu, bạn phải tính toán biểu đồ, ví dụ: bằng cách sử dụng numpy.histogram
, sau đó vẽ theo phương pháp plot
. Chỉ sử dụng scatter
nếu bạn muốn liên kết thông tin khác với các điểm của mình bằng cách đặt kích thước cho mỗi điểm.
Cách tiếp cận thay thế đầu tiên để sử dụng hist
liên quan đến việc chuyển tất cả ba tập dữ liệu cùng một lúc sang phương thức hist
. Phương pháp hist
sau đó điều chỉnh độ rộng và vị trí của mỗi thanh sao cho tất cả ba bộ được trình bày rõ ràng.
Phương án thứ hai là sử dụng tùy chọn histtype='step'
, làm cho các ô rõ ràng cho mỗi bộ.
Dưới đây là một kịch bản chứng minh điều này:
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(101)
a = np.random.normal(size=1000)
b = np.random.normal(size=1000)
c = np.random.normal(size=1000)
common_params = dict(bins=20,
range=(-5, 5),
normed=True)
plt.subplots_adjust(hspace=.4)
plt.subplot(311)
plt.title('Default')
plt.hist(a, **common_params)
plt.hist(b, **common_params)
plt.hist(c, **common_params)
plt.subplot(312)
plt.title('Skinny shift - 3 at a time')
plt.hist((a, b, c), **common_params)
plt.subplot(313)
common_params['histtype'] = 'step'
plt.title('With steps')
plt.hist(a, **common_params)
plt.hist(b, **common_params)
plt.hist(c, **common_params)
plt.savefig('3hist.png')
plt.show()
Và đây là âm mưu kết quả:
Hãy nhớ bạn có thể làm tất cả điều này với giao diện hướng đối tượng là tốt, ví dụ tạo các ô con riêng lẻ, v.v.
Vì dữ liệu có thể vượt qua nhiều lần, nên có tham số 'alpha' (minh bạch) cho bất kỳ phương pháp nào bạn sử dụng. – Hooked