Ghi chú Nhấn vào đây để tải xuống mã ví dụ đầy đủhere to download the full example code
Để tạo một biểu đồ phân tán với một huyền thoại, người ta có thể sử dụng một vòng lặp và tạo một biểu đồ scatter cho mỗi mục để xuất hiện trong truyền thuyết và đặt label phù hợp.
Sau đây cũng cho thấy mức độ minh bạch của các điểm đánh dấu có thể được điều chỉnh bằng cách cho alpha giá trị từ 0 đến 1.
import numpy as np import matplotlib.pyplot as plt np.random.seed(19680801) fig, ax = plt.subplots() for color in ['tab:blue', 'tab:orange', 'tab:green']: n = 750 x, y = np.random.rand(2, n) scale = 200.0 * np.random.rand(n) ax.scatter(x, y, c=color, s=scale, label=color, alpha=0.3, edgecolors='none') ax.legend() ax.grid(True) plt.show()
Tạo huyền thoại tự động#
Một tùy chọn khác để tạo một huyền thoại cho một phân tán là sử dụng phương thức PathCollection.legend_elements. Nó sẽ tự động cố gắng xác định một số lượng hữu ích của các mục nhập huyền thoại sẽ được hiển thị và trả về một bộ xử lý và nhãn. Những điều đó có thể được chuyển đến cuộc gọi đến legend.
N = 45 x, y = np.random.rand(2, N) c = np.random.randint(1, 5, size=N) s = np.random.randint(10, 220, size=N) fig, ax = plt.subplots() scatter = ax.scatter(x, y, c=c, s=s) # produce a legend with the unique colors from the scatter legend1 = ax.legend(*scatter.legend_elements(), loc="lower left", title="Classes") ax.add_artist(legend1) # produce a legend with a cross section of sizes from the scatter handles, labels = scatter.legend_elements(prop="sizes", alpha=0.6) legend2 = ax.legend(handles, labels, loc="upper right", title="Sizes") plt.show()
Các đối số tiếp theo cho phương thức PathCollection.legend_elements có thể được sử dụng để điều khiển số lượng mục nhập huyền thoại sẽ được tạo và cách chúng nên được dán nhãn. Sau đây cho thấy cách sử dụng một số trong số họ.
volume = np.random.rayleigh(27, size=40) amount = np.random.poisson(10, size=40) ranking = np.random.normal(size=40) price = np.random.uniform(1, 10, size=40) fig, ax = plt.subplots() # Because the price is much too small when being provided as size for ``s``, # we normalize it to some useful point sizes, s=0.3*(price*3)**2 scatter = ax.scatter(volume, amount, c=ranking, s=0.3*(price*3)**2, vmin=-3, vmax=3, cmap="Spectral") # Produce a legend for the ranking (colors). Even though there are 40 different # rankings, we only want to show 5 of them in the legend. legend1 = ax.legend(*scatter.legend_elements(num=5), loc="upper left", title="Ranking") ax.add_artist(legend1) # Produce a legend for the price (sizes). Because we want to show the prices # in dollars, we use the *func* argument to supply the inverse of the function # used to calculate the sizes from above. The *fmt* ensures to show the price # in dollars. Note how we target at 5 elements here, but obtain only 4 in the # created legend due to the automatic round prices that are chosen for us. kw = dict(prop="sizes", num=5, color=scatter.cmap(0.7), fmt="$ {x:.2f}", func=lambda s: np.sqrt(s/.3)/3) legend2 = ax.legend(*scatter.legend_elements(**kw), loc="lower right", title="Price") plt.show()
Tổng thời gian chạy của tập lệnh: (0 phút 1.840 giây) ( 0 minutes 1.840 seconds)
Phòng trưng bày được tạo ra bởi Sphinx-Gallery