τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Οι χάρτες θερμότητας είναι ένας αποτελεσματικός τρόπος εμφάνισης δεδομένων μήτρας μέσω χρωματικής χαρτογράφησης. Matplotlibimshow
Οι λειτουργίες είναι ένα ισχυρό εργαλείο για τη δημιουργία διάφορων χαρτών θερμότητας. Πριν ξεκινήσουμε το παράδειγμα, ας κατανοήσουμε πρώτα τις κύριες παραμέτρους:
Αρχικά, ας σχεδιάσουμε έναν βασικό χάρτη θερμότητας για να δείξουμε τη συνολική κατανομή του συνόλου δεδομένων:
- import matplotlib.pyplot as plt
- import numpy as np
-
- data = np.random.random((10, 10)) # 生成随机矩阵数据
-
- plt.imshow(data, cmap='viridis', interpolation='nearest')
- plt.colorbar()
-
- plt.title('基本热力图')
- plt.show()
Σε αυτό το απλό παράδειγμα, χρησιμοποιούμεviridis
χρωματικός χάρτης καιnearest
μέθοδος παρεμβολής.
Το Matplotlib υποστηρίζει μια ποικιλία από ενσωματωμένους έγχρωμους χάρτες, αλλά μπορούμε επίσης να προσαρμόσουμε τον χρωματικό χάρτη για να κάνουμε τον χάρτη θερμότητας πιο εξατομικευμένο. Ακολουθεί ένα παράδειγμα προσαρμοσμένου χρωματικού χάρτη:
- custom_cmap = plt.cm.get_cmap('coolwarm', 5) # 从'coolwarm'中选择5个颜色
-
- plt.imshow(data, cmap=custom_cmap, interpolation='bilinear')
- plt.colorbar()
-
- plt.title('自定义颜色映射')
- plt.show()
Η προσθήκη σχολιασμών σε έναν χάρτη θερμότητας μπορεί να μεταφέρει με μεγαλύτερη σαφήνεια το νόημα των δεδομένων.μπορούμε να χρησιμοποιήσουμεannotate
Οι συναρτήσεις επισημαίνουν τιμές στον χάρτη θερμότητας:
- fig, ax = plt.subplots()
- im = ax.imshow(data, cmap='plasma', interpolation='bicubic')
-
- for i in range(len(data)):
- for j in range(len(data[i])):
- text = ax.text(j, i, f'{data[i, j]:.2f}', ha='center', va='center', color='w')
-
- plt.colorbar(im)
-
- plt.title('带有注释的热力图')
- plt.show()
Το Matplotlib υποστηρίζει επίσης τη σχεδίαση χαρτών θερμότητας διαφορετικών σχημάτων, όπως κυκλικά ή ελλειπτικά σημεία. Εδώ είναι ένα παράδειγμα:
- from matplotlib.patches import Ellipse
-
- fig, ax = plt.subplots()
- im = ax.imshow(data, cmap='YlGnBu', interpolation='bicubic')
-
- # 添加椭圆形状的点
- for i in range(len(data)):
- for j in range(len(data[i])):
- ellipse = Ellipse((j, i), 0.8, 0.8, edgecolor='w', facecolor='none')
- ax.add_patch(ellipse)
-
- plt.colorbar(im)
-
- plt.title('不同形状的热力图')
- plt.show()
Μερικές φορές θέλουμε να επισημάνουμε ορισμένα μπλοκ σε έναν πίνακα για να κάνουμε τις βασικές πληροφορίες πιο εμφανείς.Μπορούμε να το κάνουμε αυτό χρησιμοποιώνταςimshow
τουextent
Παράμετροι για να επιτευχθεί αυτό:
- fig, ax = plt.subplots()
- block_data = np.random.random((5, 5)) # 生成块状数据
-
- ax.imshow(block_data, cmap='Reds', interpolation='nearest', extent=[2, 7, 2, 7])
- plt.colorbar()
-
- plt.title('分块热力图')
- plt.show()
Σε ορισμένες περιπτώσεις, μπορεί να χρειαστεί να εμφανίσουμε πολλούς χάρτες θερμότητας στο ίδιο γράφημα για να συγκρίνουμε ή να παρουσιάσουμε διαφορετικές πτυχές των δεδομένων.Αυτό μπορεί να γίνει μέσω Matplotlibsubplot
ολοκληρώσει:
- fig, axs = plt.subplots(1, 2, figsize=(10, 4)) # 一行两列的子图
-
- # 第一个子图
- axs[0].imshow(data, cmap='Blues', interpolation='nearest')
- axs[0].set_title('子图1')
-
- # 第二个子图
- axs[1].imshow(data.T, cmap='Oranges', interpolation='bicubic') # 转置数据以展示不同热力图
- axs[1].set_title('子图2')
-
- plt.show()
Το Matplotlib υποστηρίζει επίσης τη σχεδίαση τρισδιάστατων χαρτών θερμότητας, που είναι πολύ χρήσιμο για την εμφάνιση δεδομένων με τρισδιάστατη δομή:
- from mpl_toolkits.mplot3d import Axes3D
-
- fig = plt.figure(figsize=(8, 6))
- ax = fig.add_subplot(111, projection='3d')
-
- x, y = np.meshgrid(range(len(data)), range(len(data)))
- ax.plot_surface(x, y, data, cmap='viridis')
-
- ax.set_title('3D热力图')
- plt.show()
Το Matplotlib επιτρέπει την περαιτέρω εξερεύνηση προηγμένων ρυθμίσεων χρωματικών χαρτών και γραμμών χρωμάτων για την κάλυψη πιο περίπλοκων αναγκών. Ακολουθεί ένα παράδειγμα που δείχνει την προσαρμογή μιας γραμμής χρωμάτων και την προσθήκη ετικετών γραμμής χρωμάτων:
- fig, ax = plt.subplots()
- im = ax.imshow(data, cmap='coolwarm', interpolation='nearest')
-
- # 自定义颜色栏
- cbar = plt.colorbar(im, ax=ax, fraction=0.046, pad=0.04)
- cbar.set_label('数据值', rotation=270, labelpad=15)
-
- plt.title('高级颜色栏设置')
- plt.show()
Μερικές φορές, θέλουμε να εμφανίσουμε αλλαγές στα δεδομένα με δυναμικό τρόπο. Αυτό μπορεί να γίνει χρησιμοποιώντας το MatplotlibFuncAnimation
ολοκληρώσει. Το παρακάτω είναι ένα απλό παράδειγμα δυναμικού χάρτη θερμότητας:
- from matplotlib.animation import FuncAnimation
-
- fig, ax = plt.subplots()
- data_frames = [np.random.random((10, 10)) for _ in range(10)] # 生成多帧数据
-
- def update(frame):
- ax.clear()
- im = ax.imshow(data_frames[frame], cmap='Blues', interpolation='nearest')
- plt.title(f'动态热力图 - 帧 {frame}')
-
- ani = FuncAnimation(fig, update, frames=len(data_frames), interval=500, repeat=False)
- plt.show()
Για να κάνετε τον χάρτη θερμότητας πιο διαδραστικό, μπορείτε να χρησιμοποιήσετε το Matplotlib'simshow
συνδυασμόςmplcursors
Η Βιβλιοθήκη εφαρμόζει την προβολή του δείκτη σημείων δεδομένων:
- import mplcursors
-
- fig, ax = plt.subplots()
- im = ax.imshow(data, cmap='Greens', interpolation='nearest')
-
- mplcursors.cursor(hover=True).connect("add", lambda sel: sel.annotation.set_text(f'{sel.artist.get_array()[sel.target.index]:.2f}'))
-
- plt.title('交互式热力图')
- plt.show()
Με αυτόν τον τρόπο, όταν το ποντίκι αιωρείται πάνω από τα σημεία δεδομένων του χάρτη θερμότητας, θα εμφανιστούν οι αντίστοιχες τιμές.
Μερικές φορές, για να δείξουμε πιο καθαρά τις διαφορές στα δεδομένα, μπορεί να χρειαστεί να κανονικοποιήσουμε το εύρος δεδομένων.Αυτό μπορεί να γίνει μέσωNormalize
τάξη για υλοποίηση:
- from matplotlib.colors import Normalize
-
- normalized_data = Normalize()(data) # 将数据标准化
-
- fig, ax = plt.subplots()
- im = ax.imshow(normalized_data, cmap='YlGnBu', interpolation='bicubic')
- plt.colorbar(im, label='标准化值范围')
-
- plt.title('标准化热力图')
- plt.show()
Τέλος, μπορούμε να εξαγάγουμε τον σχεδιασμένο χάρτη θερμότητας ως αρχείο εικόνας μέσω του Matplotlib για περαιτέρω χρήση ή κοινή χρήση:
- fig, ax = plt.subplots()
- im = ax.imshow(data, cmap='coolwarm', interpolation='nearest')
- plt.colorbar(im)
-
- plt.title('导出热力图')
- plt.savefig('heatmap.png')
Τα παραπάνω είναι μια σειρά παραδειγμάτων και τεχνικών για τη σχεδίαση διαφορετικών τύπων χαρτών ψυχρής θερμότητας με το Matplotlib. Μέσα από αυτά τα παραδείγματα, αποκτήσαμε μια εις βάθος κατανόηση της δύναμης του Matplotlib και του τρόπου δημιουργίας πολύχρωμων, διαδραστικών και προηγμένων χαρτών θερμότητας προσαρμόζοντας παραμέτρους και εφαρμόζοντας διαφορετικές τεχνικές. Ας ελπίσουμε ότι αυτά τα παραδείγματα παρείχαν χρήσιμη καθοδήγηση για την εργασία σας στην οπτικοποίηση δεδομένων.
Μέσα από την εισαγωγή αυτού του άρθρου, έχουμε μια εις βάθος συζήτηση για τις διάφορες τεχνικές και τις ρυθμίσεις παραμέτρων της βιβλιοθήκης Matplotlib κατά τη σχεδίαση διαφορετικών τύπων χαρτών ψυχρής θερμότητας. Εδώ είναι τα βασικά σημεία που μάθαμε:
ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ:Μάθαμε για τις βασικές παραμέτρους για τη δημιουργία χαρτών θερμότητας στο Matplotlib, όπως π.χdata
、cmap
、interpolation
、vmin
καιvmax
, αυτές οι παράμετροι έχουν σημαντικό αντίκτυπο στην εμφάνιση και την αναγνωσιμότητα του χάρτη θερμότητας.
Κοινοί τύποι χαρτών θερμότητας:Μέσω παραδειγμάτων, συζητήσαμε τις μεθόδους σχεδίασης κοινών τύπων θερμικών χαρτών, όπως βασικούς χάρτες θερμότητας, προσαρμοσμένη χρωματική χαρτογράφηση, σχολιασμούς, χάρτες θερμότητας διαφορετικών σχημάτων, χάρτες θερμότητας μπλοκ, χάρτες θερμότητας πολλαπλών υποχάρτων, τρισδιάστατους χάρτες θερμότητας κ.λπ.
προηγμένες ρυθμίσεις:Μάθαμε πώς να εκτελούμε προηγμένες ρυθμίσεις χρωματικής αντιστοίχισης και χρωματικής γραμμής και πώς να κάνουμε τους χάρτες θερμότητας πιο εξατομικευμένους και ευανάγνωστους προσαρμόζοντας τις ετικέτες της γραμμής χρώματος, τη δυναμική εμφάνιση, τη διαδραστικότητα, τα τυποποιημένα εύρη δεδομένων και άλλες τεχνικές.
Πρακτικές συμβουλές:Εισαγάγαμε ορισμένες πρακτικές τεχνικές, όπως η προσθήκη χρωματικών γραμμών, η εξαγωγή χαρτών θερμότητας ως αρχεία εικόνας, η διαδραστική εμφάνιση χαρτών θερμότητας κ.λπ., για τη βελτίωση της χρηστικότητας και της δυνατότητας κοινής χρήσης των γραφημάτων.