Bản đồ nhiệt cốt truyện python trên bản đồ

Trong Hướng dẫn Python Matplotlib này, chúng ta sẽ khám phá cách vẽ Sơ đồ nhiệt 2D. Heatmap là một loại biểu đồ biểu thị dữ liệu dưới dạng màu sắc. Các màu khác nhau được sử dụng để biểu thị các giá trị dữ liệu khác nhau. Ví dụ: bản đồ nhiệt dựa trên nhiệt độ thường sẽ có màu đỏ để biểu thị các giá trị cao hơn và màu trắng cho các giá trị thấp hơn

Có nhiều cách tạo bản đồ nhiệt trong matplotlib. Chúng ta sẽ thảo luận về hai kỹ thuật như vậy trong hướng dẫn này

Bản đồ nhiệt 2D Matplotlib

Phương pháp vẽ sơ đồ nhiệt đầu tiên là sử dụng hàm imshow[]. [Thường được sử dụng để hiển thị hình ảnh].

Chúng tôi cần một số dữ liệu mẫu để vẽ đồ thị, chúng tôi đã sử dụng hàm rand[] trong numpy để tạo mảng 2D có kích thước 12 x 12, với các giá trị nằm trong khoảng từ 0 đến 1. Bây giờ chúng ta sẽ chuyển cái này vào hàm imshow[] và chỉ định một bản đồ màu [

import matplotlib.pyplot as plt
import numpy as np
  
Z = np.random.rand[12, 12]
  
plt.pcolormesh[Z , cmap = 'hot']
  
plt.title['2-D Heat Map in Matplotlib']
plt.colorbar[]
plt.show[]
1]. Bản đồ màu quyết định màu nào sẽ được sử dụng trong biểu đồ. Matplotlib đi kèm với hàng chục bản đồ màu mà bạn có thể sử dụng

import matplotlib.pyplot as plt
import numpy as np
  
Z = np.random.rand[12, 12]
  
plt.imshow[Z, cmap='hot', interpolation='nearest']
  
plt.title['2-D Heat Map in Matplotlib']
plt.colorbar[]
plt.show[]

Đây là bản đồ nhiệt của chúng tôi. Chúng tôi đã sử dụng bản đồ màu “nóng”, vì vậy chúng tôi nhận được các màu như đỏ, vàng và trắng thường được sử dụng trong các ô dựa trên ôn đới/nhiệt

Chúng tôi cũng có một thanh màu đẹp tự động phát hiện phạm vi giá trị. Tất cả những gì chúng ta cần làm là tạo nó bằng cách sử dụng

import matplotlib.pyplot as plt
import numpy as np
  
Z = np.random.rand[12, 12]
  
plt.pcolormesh[Z , cmap = 'hot']
  
plt.title['2-D Heat Map in Matplotlib']
plt.colorbar[]
plt.show[]
2

Có một phương pháp khác, sử dụng hàm

import matplotlib.pyplot as plt
import numpy as np
  
Z = np.random.rand[12, 12]
  
plt.pcolormesh[Z , cmap = 'hot']
  
plt.title['2-D Heat Map in Matplotlib']
plt.colorbar[]
plt.show[]
0. Như bạn có thể thấy, mã gần như giống hệt nhau, ngoại trừ cách gọi hàm khác nhau [các tham số vẫn giữ nguyên]

import matplotlib.pyplot as plt
import numpy as np
  
Z = np.random.rand[12, 12]
  
plt.pcolormesh[Z , cmap = 'hot']
  
plt.title['2-D Heat Map in Matplotlib']
plt.colorbar[]
plt.show[]

Và ở đây chúng ta có cùng một đầu ra. Có vẻ hơi khác một chút vì các giá trị được tạo ngẫu nhiên

Bản đồ nhiệt độ dốc trong Matplotlib

Rất có thể bạn không hài lòng với các bản đồ nhiệt dựa trên hình vuông được hiển thị ở trên. Bạn muốn xem bản đồ nhiệt “dựa trên độ dốc” hơn, còn được gọi là bản đồ nhiệt “mờ”. Đây là cách bạn có thể làm như vậy

x, y = np.meshgrid[np.linspace[-3, 3, 100], np.linspace[-3, 3, 100]]
z = [1 - x*y] - np.sin[x**2 + y**2 ]
z = z[:-1, :-1]

Ý tưởng là bạn có một tham số bổ sung gọi là “Z” để kiểm soát cường độ của màu sắc/giá trị. Chúng tôi tạo các giá trị cho Z bằng cách sử dụng các giá trị của X và Y mà chúng tôi đã tạo ngẫu nhiên

Chúng ta cần xóa giá trị đầu tiên và giá trị cuối cùng khỏi Z, như được hiển thị trong dòng thứ ba ở trên. Điều này là do vấn đề về giá trị ranh giới sẽ tạo ra cảnh báo nếu bạn không làm điều này. [X và Y là các giới hạn, Z sẽ nằm trong chúng]

plt.pcolormesh[x, y, z, cmap='RdBu', vmin = -np.abs[z].max[], 
                                     vmax = np.abs[z].max[]]

Ở đây chúng ta cần sử dụng

import matplotlib.pyplot as plt
import numpy as np
  
Z = np.random.rand[12, 12]
  
plt.pcolormesh[Z , cmap = 'hot']
  
plt.title['2-D Heat Map in Matplotlib']
plt.colorbar[]
plt.show[]
1 [không phải
import matplotlib.pyplot as plt
import numpy as np
  
Z = np.random.rand[12, 12]
  
plt.pcolormesh[Z , cmap = 'hot']
  
plt.title['2-D Heat Map in Matplotlib']
plt.colorbar[]
plt.show[]
2]. Chúng tôi sẽ chuyển ba bộ dữ liệu của mình, đặt bản đồ màu là “Đỏ thành Xanh lam” và xác định các giá trị tối thiểu và tối đa cho bản đồ nhiệt của chúng tôi

Giá trị tối thiểu và tối đa mà chúng tôi đang sử dụng không phải là giá trị tối thiểu và tối đa theo nghĩa đen từ tập dữ liệu Z. Thay vào đó, chúng tôi đang sử dụng giá trị có độ lớn lớn nhất. Mục tiêu của chúng tôi là đảm bảo rằng bản đồ nhiệt đồng nhất [điều này có thể không đúng nếu chúng tôi sử dụng các giá trị theo nghĩa đen]. Bạn có thể thử cả hai cách và tự mình xem sự khác biệt. [Cuối cùng, bạn có thể cần đến kỹ thuật khác tùy thuộc vào dữ liệu của mình, vì vậy bạn nên hiểu cả hai]

Đây là mã cuối cùng

import matplotlib.pyplot as plt
import numpy as np

x, y = np.meshgrid[np.linspace[-3, 3, 100], np.linspace[-3, 3, 100]]
z = [1 - x*y] - np.sin[x**2 + y**2 ]
z = z[:-1, :-1]

fig, ax = plt.subplots[]
ax.set_title['Heatmap with Colormesh']

plt.pcolormesh[x, y, z, cmap='RdBu', vmin = -np.abs[z].max[], 
                                     vmax = np.abs[z].max[]]
plt.colorbar[]
plt.show[]

Và đây là đầu ra của chúng tôi. Như bạn có thể thấy, cái này trông giống bản đồ nhiệt thông thường của bạn hơn

Điều này đánh dấu sự kết thúc của Vẽ sơ đồ nhiệt 2D với Matplotlib trong Hướng dẫn Python. Mọi đề xuất hoặc đóng góp cho CodersLegacy đều được chào đón. Các câu hỏi liên quan đến nội dung hướng dẫn có thể hỏi ở phần bình luận bên dưới

Chủ Đề