Tạo bản đồ nhiệt Python
Có được kiến thức chuyên môn về các công nghệ phát triển phần mềm và giao diện người dùng, back-end, phát triển web, phát triển ứng dụng và phát triển phần mềm ở các cấp độ khác nhau, mang lại lợi thế hơn những người khác trong lĩnh vực phát triển phần mềm đòi hỏi khắt khe. Bắt đầu với CTC được đảm bảo 5 Rs LPA* Show Chương trình đảm bảo việc làm* Tùy chọn thanh toán linh hoạt Bản đồ nhiệt 2-D là một công cụ trực quan hóa dữ liệu giúp biểu thị mức độ của hiện tượng dưới dạng màu sắc. Trong python, chúng ta có thể vẽ sơ đồ nhiệt 2-D bằng gói Matplotlib. Có nhiều phương pháp khác nhau để vẽ Bản đồ nhiệt 2-D, một số phương pháp được thảo luận bên dưới. nhập khẩu cốt truyện. graph_objects as go import numpy as np # Tạo hình chữ nhật dưới dạng bản đồ nhiệt # chỉ định các cạnh của hình vuông bản đồ nhiệt phi = (1 + np. sqrt(5) )/2. # tỷ lệ vàng xe = [0, 1, 1+(1/(phi**4)), 1+(1/(phi**3)), phi] ye = [0, 1/(phi**3) . Hình (dữ liệu = đi. Bản đồ nhiệt ( x = np. sắp xếp (xe), y = np. sort(ye), z = z, type = 'heatmap', colorscale = 'Viridis')) # Thêm biểu đồ đường xoắn ốc def xoắn ốc(th). một = 1. 120529 b = 0. 306349 r = a*np. exp(-b*th) trả về (r*np. cos(th), r*np. sin(th)) theta = np. không gian trống (-np. pi/13,4*np. pi,1000); . add_trace(đi. Phân tán(x= -x+x[0], y= y-y[0], line =dict(color='white',width=3))) axis_template = dict(range = [0,1. 6], autorange = False, showgrid = False, zeroline = False, linecolor = 'black', showticklabels = False, ticks = '' ) hình. update_layout(margin = dict(t=200,r=200,b=200,l=200), xaxis = axis_template, yaxis = axis_template, showlegend = False, width = 700, height = 700, autosize = False ) hình. trình diễn()Giờ đây, phong cách trực quan hóa này đã đi một chặng đường dài từ các bảng mã màu đơn giản. Nó được sử dụng rộng rãi với dữ liệu không gian địa lý. Nó thường được áp dụng để mô tả mật độ hoặc cường độ của các biến, trực quan hóa các mẫu, phương sai và thậm chí cả sự bất thường Ma trận Tương quan — Thành phần của một mẫu Ngũ cốcVới rất nhiều ứng dụng, phương pháp cơ bản này đáng được chú ý. Bài viết này sẽ đi qua những kiến thức cơ bản về bản đồ nhiệt và xem cách tạo chúng bằng Matplotlib và Seaborn thực hành Chúng tôi sẽ sử dụng Pandas và Numpy để giúp chúng tôi sắp xếp dữ liệu import pandas as pd Tập dữ liệu cho ví dụ này là một chuỗi thời gian của tỷ giá hối đoái trên mỗi U. S. đô la Thay vì biểu đồ đường thông thường biểu thị các giá trị theo thời gian, tôi muốn trực quan hóa dữ liệu này bằng một bảng được mã hóa màu, với tháng là cột và năm là hàng Tôi sẽ thử phác thảo cả biểu đồ đường và bản đồ nhiệt để hiểu nó trông như thế nào Vẽ bằng sketchpad. ứng dụngBiểu đồ đường sẽ hiệu quả hơn trong việc hiển thị dữ liệu; Bản đồ nhiệt sẽ có tác động cao hơn vì chúng không phải là cách hiển thị loại dữ liệu thông thường. Chúng sẽ mất đi một số độ chính xác, đặc biệt là trong trường hợp này, vì chúng tôi sẽ cần tổng hợp các giá trị trong nhiều tháng. Nhưng nhìn chung, chúng vẫn có thể hiển thị các mẫu và tóm tắt các khoảng thời gian trong dữ liệu của chúng tôi Hãy đọc tập dữ liệu và sắp xếp lại dữ liệu theo phác thảo # read file Đối với ví dụ này, chúng tôi sẽ sử dụng các cột 1 và 7, là 'Chuỗi thời gian' và 'CANADA — ĐÔ LA CANADIAN/US$' Hãy đổi tên các cột đó thành 'DATE' và 'CAD_USD' và vì chúng ta đang chuyển các tiêu đề của mình nên chúng ta cũng cần bỏ qua hàng đầu tiên Chúng tôi cũng cần phân tích cú pháp cột đầu tiên, vì vậy các giá trị ở định dạng Ngày giờ và chúng tôi sẽ xác định ngày làm chỉ mục của mình Khung dữ liệuHãy đảm bảo rằng tất cả các giá trị của chúng tôi là số và cũng xóa các hàng trống df['CAD_USD'] = pd.to_numeric(df.CAD_USD, errors='coerce') Chúng tôi cần tổng hợp các giá trị đó theo tháng. Hãy tạo các cột riêng biệt cho tháng và năm, sau đó chúng tôi nhóm các cột mới và lấy giá trị trung bình # create a copy of the dataframe, and add columns for month and yearNăm hàng đầu tiên được nhóm lại Tất cả những gì còn lại phải làm là giải nén các chỉ mục và chúng ta sẽ có bảng của mình df_m = df_m.unstack(level=0) Khung dữ liệu được định hình lạibản đồ màuMọi thứ đều ở đúng vị trí. Bây giờ chúng ta có thể sử dụng # read file 4 của Seaborn và vẽ biểu đồ đầu tiên của chúng tafig, ax = plt.subplots(figsize=(11, 9))sb.heatmap(df_m)plt.show()bản đồ nhiệt đầu tiên Được rồi, còn nhiều việc phải làm trước khi hình ảnh trực quan này sẵn sàng Màu sắc là phần quan trọng nhất trong biểu đồ của chúng tôi và bản đồ màu hơi phức tạp. Chúng tôi không cần điều đó; Chúng ta cũng có thể làm rõ các giới hạn của bản đồ màu bằng cách xác định # read file 6 và # read file 7. Pandas # read file 8 và # read file 9 có thể giúp chúng tôi tìm ra đâu là giá trị tốt nhất cho nhữngfig, ax = plt.subplots(figsize=(11, 9))# plot heatmapBản đồ nhiệt thứ hai tùy chỉnhCó rất nhiều lập luận khác sẽ được khám phá với # read file 4Ví dụ: df['CAD_USD'] = pd.to_numeric(df.CAD_USD, errors='coerce') 1 xác định kích thước của đường kẻ giữa các hộp và thậm chí chúng ta có thể chuyển đối số trực tiếp tới thanh màu với df['CAD_USD'] = pd.to_numeric(df.CAD_USD, errors='coerce') 2Màu sắc trông đẹp và bây giờ chúng ta có thể chuyển sự chú ý của mình sang các dấu tích. Tôi không nghĩ CAD_USD-1 là tên phù hợp cho tháng 1. Hãy thay thế chúng bằng một số văn bản thân thiện hơn Di chuyển các dấu kiểm lên đầu biểu đồ sẽ cải thiện khả năng hiển thị và làm cho biểu đồ trông giống một bảng hơn. Chúng tôi cũng có thể loại bỏ các nhãn x và y vì các giá trị trong trục của chúng tôi khá dễ hiểu và tiêu đề cũng sẽ khiến chúng trở nên dư thừa # figure Có một đối số cuối cùng tôi chuyển đến bản đồ nhiệt, đó là df['CAD_USD'] = pd.to_numeric(df.CAD_USD, errors='coerce') 3. Điều đó sẽ làm cho các ô của ma trận của chúng ta có dạng hình vuông bất kể kích thước của hìnhNhìn chung, nó có vẻ tốt. Chúng ta có thể thấy rằng U. S. đô la cao hơn gần 50% so với đô la Canada vào đầu những năm 2000, bắt đầu thay đổi vào khoảng năm 2003. Đồng đô la thấp hơn này được duy trì cho đến cuối năm 2014, với một số thay đổi trong cuộc khủng hoảng tài chính năm 2008 Đến năm 2015, nó đã ổn định khoảng 1. 20~1. 40, với sự thay đổi tương đối nhỏ trong mức trung bình hàng tháng cho đến năm 2019, kết thúc hồ sơ của chúng tôi Ma trận tương quan Đối với ví dụ sau, tôi sẽ xem qua một ma trận tương quan để xem thêm một số chức năng của bản đồ nhiệt của Seaborn Tập dữ liệu là mẫu của 80 loại ngũ cốc khác nhau và tôi muốn xem xét thành phần của chúng Để xây dựng ma trận tương quan, chúng ta có thể sử dụng Pandas df['CAD_USD'] = pd.to_numeric(df.CAD_USD, errors='coerce') 4# read datasetKhung dữ liệu ngũ cốc Có rất nhiều dư thừa trong một ma trận tương quan; mặt nạMay mắn thay, chúng ta có thể sử dụng mặt nạ với bản đồ nhiệt của Seaborn và Numpy có các chức năng để tạo một np.ones_like(df_corr, dtype=np.bool) Ma trận của những cái (boolean)Numpy df['CAD_USD'] = pd.to_numeric(df.CAD_USD, errors='coerce') 5 có thể tạo ma trận booleans có cùng hình dạng với khung dữ liệu của chúng ta, trong khi df['CAD_USD'] = pd.to_numeric(df.CAD_USD, errors='coerce') 6 sẽ chỉ trả về tam giác trên của ma trận đó# read file 0Mặt nạMa trận tương quan đầu tiênMặt nạ có thể hữu ích, nhưng vẫn còn hai ô trống trong ma trận của chúng ta Không có gì sai với điều đó cả. Những giá trị đó có thể thêm vào tính đối xứng của cốt truyện của chúng tôi - Điều đó có nghĩa là, sẽ dễ dàng biết được hai danh sách giống nhau hơn nếu chúng bắt đầu và kết thúc với cùng các giá trị Nếu như tôi, bạn cảm thấy phiền với điều đó, bạn có thể lọc chúng ra khi vẽ sơ đồ # read file 1Ma trận tương quan thứ haiThật tuyệt, điều duy nhất không được đề cập là các chú thích. Chúng ta có thể thiết lập những cái đó với tham số df['CAD_USD'] = pd.to_numeric(df.CAD_USD, errors='coerce') 7 và chúng ta có thể truyền hàm định dạng cho nó bằng df['CAD_USD'] = pd.to_numeric(df.CAD_USD, errors='coerce') 8Bảng phân kỳChúng tôi vẫn cần một tiêu đề và các dấu tích sẽ đẹp hơn nếu viết hoa, nhưng đó chưa phải là ưu tiên Các mối tương quan nằm trong khoảng từ -1 đến 1, vì vậy chúng có hai hướng và trong trường hợp này, bảng phân kỳ hoạt động tốt hơn bảng tuần tự Bảng phân kỳ SeabornSeaborn có một phương pháp hiệu quả cho việc đó, được gọi là df['CAD_USD'] = pd.to_numeric(df.CAD_USD, errors='coerce') 9, nó dùng để xây dựng các bản đồ màu mà chúng ta cần với một màu ở mỗi bên, hội tụ thành một màu khác ở trung tâmPhương pháp đó sử dụng màu HUSL, vì vậy bạn cần màu sắc, độ bão hòa và độ sáng. tôi đã sử dụng hsluv. org để chọn màu của biểu đồ này # read file 2Ma trận tương quan cuối cùngKhá tuyệt, chúng tôi đã xây dựng một hình ảnh trực quan tuyệt đẹp cho ma trận tương quan. Bây giờ, dễ dàng hơn để xem các hệ số tương quan quan trọng nhất, chẳng hạn như Chất xơ và Kali Tỉ trọng Thông thường, sau ma trận tương quan, chúng ta có cái nhìn rõ hơn về các biến có mối quan hệ chặt chẽ Trong trường hợp này, chúng tôi không có quá nhiều dữ liệu để xem xét, do đó, một biểu đồ phân tán sẽ đủ để bắt đầu điều tra các biến đó Vấn đề với các biểu đồ phân tán là chúng có xu hướng trở nên khó đọc với quá nhiều dữ liệu, vì các điểm bắt đầu chồng lên nhau. Đó là khi các bản đồ nhiệt quay trở lại hiện trường để trực quan hóa mật độ # read file 3Ước tính mật độNếu bạn muốn tìm hiểu thêm về KDE, tôi khuyên bạn nên xem bài viết của Matthew Conlen về chủ đề này Chúng tôi đã khám phá hầu hết những điều cơ bản trong bản đồ nhiệt và xem xét cách chúng có thể tăng độ phức tạp với bản đồ màu, thanh, mặt nạ và ước tính mật độ Matplotlib có bản đồ nhiệt không?Điều này thường được gọi là bản đồ nhiệt. Nếu dữ liệu là phân loại, đây sẽ được gọi là bản đồ nhiệt phân loại. Hàm imshow của Matplotlib giúp việc tạo ra các ô như vậy trở nên đặc biệt dễ dàng . Các ví dụ sau đây cho thấy cách tạo bản đồ nhiệt có chú thích.
Bản đồ nhiệt trong Seaborn là gì?Bản đồ nhiệt là một biểu đồ dữ liệu hình chữ nhật dưới dạng ma trận được mã hóa màu. Là tham số, nó lấy một tập dữ liệu 2D. Tập dữ liệu đó có thể được ép thành một ndarray. Đây là một cách tuyệt vời để trực quan hóa dữ liệu, bởi vì nó có thể hiển thị mối quan hệ giữa các biến bao gồm cả thời gian |