Tôi sử dụng matplotlib để vẽ một số dữ liệu trong python và các ô yêu cầu thanh màu chuẩn. Dữ liệu bao gồm một loạt các ma trận NxM chứa thông tin tần số để một ô imshow() đơn giản cung cấp một biểu đồ 2D với tần số mô tả màu. Mỗi ma trận chứa dữ liệu khác nhau, nhưng phạm vi chồng chéo. Imshow bình thường hóa dữ liệu trong mỗi ma trận đến phạm vi 0-1 có nghĩa là, ví dụ, cốt truyện của ma trận A, sẽ xuất hiện giống với cốt truyện của ma trận 2 * A (mặc dù thanh màu sẽ hiển thị gấp đôi giá trị). Những gì tôi muốn là cho màu đỏ, ví dụ, để tương ứng với cùng một tần số trong tất cả các lô. Nói cách khác, một thanh màu đơn sẽ đủ cho tất cả các ô. Bất kỳ đề xuất sẽ được đánh giá rất cao.Làm thế nào tôi có thể tạo một thanh màu chuẩn cho một loạt các ô trong python
Trả lời
Giải pháp dễ nhất là gọi mức độ cao (lower_limit, upper_limit) với cùng các đối số cho từng ô.
Hoặc chỉ cần chuyển 'vmin' và' vmax' kwargs sang ' imshow'. –
Không để ăn cắp @ câu trả lời ianilis, nhưng tôi muốn thêm một ví dụ ...
Có nhiều cách, nhưng đơn giản nhất là chỉ để xác định vmin
và vmax
kwargs để imshow
. Cách khác, bạn có thể tạo một cá thể matplotlib.cm.Colormap
và chỉ định nó, nhưng điều đó phức tạp hơn mức cần thiết cho các trường hợp đơn giản.
Dưới đây là một ví dụ nhanh với một colorbar duy nhất cho tất cả hình ảnh:
import numpy as np
import matplotlib.pyplot as plt
# Generate some data that where each slice has a different range
# (The overall range is from 0 to 2)
data = np.random.random((4,10,10))
data *= np.array([0.5, 1.0, 1.5, 2.0])[:,None,None]
# Plot each slice as an independent subplot
fig, axes = plt.subplots(nrows=2, ncols=2)
for dat, ax in zip(data, axes.flat):
# The vmin and vmax arguments specify the color limits
im = ax.imshow(dat, vmin=0, vmax=2)
# Make an axis for the colorbar on the right side
cax = fig.add_axes([0.9, 0.1, 0.03, 0.8])
fig.colorbar(im, cax=cax)
plt.show()
này chỉ trả lời một nửa số câu hỏi, hay đúng hơn là bắt đầu một cái mới. Nếu bạn thay đổi
data *= np.array([0.5, 1.0, 1.5, 2.0])[:,None,None]
để
data *= np.array([2.0, 1.0, 1.5, 0.5])[:,None,None]
colorbar của bạn sẽ đi 0-0,5 mà trong trường hợp này là màu xanh đậm để hơi nhẹ hơn màu xanh và sẽ không bao gồm toàn bộ phạm vi (0-2) . Thanh màu sẽ chỉ hiển thị màu từ hình ảnh hoặc đường viền cuối cùng bất kể vmin
và vmax
.
- 1. Lặp qua một loạt các ô mẫu
- 2. Làm thế nào tôi có thể vẽ một ô imshow log-normalized với thanh màu đại diện cho dữ liệu thô trong matplotlib
- 3. Một thanh màu logarit trong ô phân tán matplotlib
- 4. Tôi có thể chuẩn hóa một URL trong python
- 5. Làm thế nào để bạn tạo một thanh màu khác trong biểu đồ thanh KendoUI?
- 6. Làm thế nào tôi có thể tạo ô đa tầng với thư viện EPPlus cho Excel
- 7. Trong Perl, làm thế nào tôi có thể chặn cho một loạt các cuộc gọi hệ thống để kết thúc?
- 8. Làm thế nào tôi có thể làm cho một khoảng thành phần nhiều ô trong một GridBagLayout
- 9. Làm thế nào tôi có thể gọi một hàm có sự chậm trễ trong python?
- 10. Làm thế nào tôi có thể cho một màu sắc để imagecolorallocate?
- 11. Trong C# làm thế nào tôi có thể chuẩn bị một chuỗi có giá trị cho tên thư mục windows
- 12. Làm thế nào tôi có thể dịch ngược một loạt các tệp DLL .NET thành một dự án Visual Studio
- 13. Làm thế nào để tạo một thanh menu (khay hệ thống) cho OSX bằng Python?
- 14. Python: Vẽ một lưới 2d và cho phép tô màu các ô
- 15. Rails làm thế nào để tạo ra một loạt các tháng dựa trên một loạt các ngày
- 16. Làm thế nào tôi có thể tạo một TabBar có thể cuộn được ...?
- 17. Làm thế nào để bạn tạo một chú thích cho một ô đường viền trong matplotlib?
- 18. Làm thế nào tôi có thể gọi một kịch bản python từ một tập lệnh python
- 19. Làm thế nào tôi có thể thêm các mục vào một tập rỗng trong python
- 20. Sử dụng Python Làm thế nào tôi có thể đọc các bit trong một byte?
- 21. Làm thế nào để có được các đường màu khác nhau cho các ô khác nhau trong một hình duy nhất?
- 22. Làm thế nào tôi có thể làm cho một lớp lót này hoạt động trong DOS?
- 23. Làm thế nào tôi có thể làm cho một thanh cuộn chỉ cuộn trong khoảng thời gian cố định?
- 24. HTML5 - Làm thế nào tôi có thể chỉ định chiều rộng cố định cho một ô cụ thể?
- 25. Làm thế nào tôi có thể tạo một nhóm các mục menu radio trong WPF?
- 26. Làm thế nào tôi có thể chuyển đổi một urthon python thành một chuỗi?
- 27. Làm thế nào tôi có thể cắt không gian màu trắng từ một biến trong awk?
- 28. Làm thế nào tôi có thể tạo ra một 'xung' như giao diện người dùng cho một ứng dụng android
- 29. Python/gspread - làm thế nào tôi có thể cập nhật nhiều ô với giá trị KHÁC cùng một lúc?
- 30. Làm thế nào tôi có thể tạo ra các đối tượng json trống trong python
Tôi thích sử dụng matshow() hoặc pcolor() vì imshow() làm mịn ma trận khi hiển thị việc diễn giải khó hơn. Vì vậy, trừ khi ma trận thực sự là một hình ảnh, tôi đề nghị bạn hãy thử hai cái kia. – ianalis
@inalis - Bạn có thể chỉ định 'interpolation = 'recent'' khi sử dụng' imshow' nếu bạn không muốn nội suy. 'pcolor' chậm hơn nhiều so với' imshow' cho mảng lớn, vì vậy tốt hơn nên sử dụng 'imshow' cho mảng lớn-ish. Mặt khác, 'pcolor' cho đầu ra vectơ, có thể rất tiện dụng vào những lúc. –
có thể trùng lặp của [Matplotlib 2 Subplots, 1 Colorbar] (http://stackoverflow.com/questions/13784201/matplotlib-2-subplots-1-colorbar) –