Κοινή χρήση τεχνολογίας

Εξερευνήστε το Matplotlib - σχεδιάζοντας χάρτες θερμότητας

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Εισαγωγή

Οι χάρτες θερμότητας είναι ένας αποτελεσματικός τρόπος εμφάνισης δεδομένων μήτρας μέσω χρωματικής χαρτογράφησης. Matplotlibimshow Οι λειτουργίες είναι ένα ισχυρό εργαλείο για τη δημιουργία διάφορων χαρτών θερμότητας. Πριν ξεκινήσουμε το παράδειγμα, ας κατανοήσουμε πρώτα τις κύριες παραμέτρους:

  • δεδομένα:Τα δεδομένα μήτρας προς γραφική παράσταση.
  • cmap:Η χρωματική χαρτογράφηση καθορίζει την κατανομή των χρωμάτων στον χάρτη θερμότητας.
  • παρεμβολή:Μέθοδος παρεμβολής, που επηρεάζει την ομαλότητα του χάρτη θερμότητας.
  • vmin και vmax:Καθορίστε τις ελάχιστες και μέγιστες τιμές για τον χρωματικό χάρτη.

2. Βασικός χάρτης θερμότητας

Αρχικά, ας σχεδιάσουμε έναν βασικό χάρτη θερμότητας για να δείξουμε τη συνολική κατανομή του συνόλου δεδομένων:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. data = np.random.random((10, 10)) # 生成随机矩阵数据
  4. plt.imshow(data, cmap='viridis', interpolation='nearest')
  5. plt.colorbar()
  6. plt.title('基本热力图')
  7. plt.show()

Σε αυτό το απλό παράδειγμα, χρησιμοποιούμεviridisχρωματικός χάρτης καιnearestμέθοδος παρεμβολής.

εικόνα-20240204002238552

3. Προσαρμοσμένη χρωματική χαρτογράφηση

Το Matplotlib υποστηρίζει μια ποικιλία από ενσωματωμένους έγχρωμους χάρτες, αλλά μπορούμε επίσης να προσαρμόσουμε τον χρωματικό χάρτη για να κάνουμε τον χάρτη θερμότητας πιο εξατομικευμένο. Ακολουθεί ένα παράδειγμα προσαρμοσμένου χρωματικού χάρτη:

  1. custom_cmap = plt.cm.get_cmap('coolwarm', 5) # 从'coolwarm'中选择5个颜色
  2. plt.imshow(data, cmap=custom_cmap, interpolation='bilinear')
  3. plt.colorbar()
  4. plt.title('自定义颜色映射')
  5. plt.show()

4. Προσθέστε σχόλια

Η προσθήκη σχολιασμών σε έναν χάρτη θερμότητας μπορεί να μεταφέρει με μεγαλύτερη σαφήνεια το νόημα των δεδομένων.μπορούμε να χρησιμοποιήσουμεannotateΟι συναρτήσεις επισημαίνουν τιμές στον χάρτη θερμότητας:

  1. fig, ax = plt.subplots()
  2. im = ax.imshow(data, cmap='plasma', interpolation='bicubic')
  3. for i in range(len(data)):
  4. for j in range(len(data[i])):
  5. text = ax.text(j, i, f'{data[i, j]:.2f}', ha='center', va='center', color='w')
  6. plt.colorbar(im)
  7. plt.title('带有注释的热力图')
  8. plt.show()

5. Χάρτες θερμότητας διαφορετικών σχημάτων

Το Matplotlib υποστηρίζει επίσης τη σχεδίαση χαρτών θερμότητας διαφορετικών σχημάτων, όπως κυκλικά ή ελλειπτικά σημεία. Εδώ είναι ένα παράδειγμα:

  1. from matplotlib.patches import Ellipse
  2. fig, ax = plt.subplots()
  3. im = ax.imshow(data, cmap='YlGnBu', interpolation='bicubic')
  4. # 添加椭圆形状的点
  5. for i in range(len(data)):
  6. for j in range(len(data[i])):
  7. ellipse = Ellipse((j, i), 0.8, 0.8, edgecolor='w', facecolor='none')
  8. ax.add_patch(ellipse)
  9. plt.colorbar(im)
  10. plt.title('不同形状的热力图')
  11. plt.show()

6. Αποκλεισμός χάρτη θερμότητας

Μερικές φορές θέλουμε να επισημάνουμε ορισμένα μπλοκ σε έναν πίνακα για να κάνουμε τις βασικές πληροφορίες πιο εμφανείς.Μπορούμε να το κάνουμε αυτό χρησιμοποιώνταςimshowτουextentΠαράμετροι για να επιτευχθεί αυτό:

  1. fig, ax = plt.subplots()
  2. block_data = np.random.random((5, 5)) # 生成块状数据
  3. ax.imshow(block_data, cmap='Reds', interpolation='nearest', extent=[2, 7, 2, 7])
  4. plt.colorbar()
  5. plt.title('分块热力图')
  6. plt.show()

εικόνα-20240204002304491

7. Χάρτης θερμότητας πολλών υπογραφών

Σε ορισμένες περιπτώσεις, μπορεί να χρειαστεί να εμφανίσουμε πολλούς χάρτες θερμότητας στο ίδιο γράφημα για να συγκρίνουμε ή να παρουσιάσουμε διαφορετικές πτυχές των δεδομένων.Αυτό μπορεί να γίνει μέσω Matplotlibsubplotολοκληρώσει:

  1. fig, axs = plt.subplots(1, 2, figsize=(10, 4)) # 一行两列的子图
  2. # 第一个子图
  3. axs[0].imshow(data, cmap='Blues', interpolation='nearest')
  4. axs[0].set_title('子图1')
  5. # 第二个子图
  6. axs[1].imshow(data.T, cmap='Oranges', interpolation='bicubic') # 转置数据以展示不同热力图
  7. axs[1].set_title('子图2')
  8. plt.show()

8. Τρισδιάστατος χάρτης θερμότητας

Το Matplotlib υποστηρίζει επίσης τη σχεδίαση τρισδιάστατων χαρτών θερμότητας, που είναι πολύ χρήσιμο για την εμφάνιση δεδομένων με τρισδιάστατη δομή:

  1. from mpl_toolkits.mplot3d import Axes3D
  2. fig = plt.figure(figsize=(8, 6))
  3. ax = fig.add_subplot(111, projection='3d')
  4. x, y = np.meshgrid(range(len(data)), range(len(data)))
  5. ax.plot_surface(x, y, data, cmap='viridis')
  6. ax.set_title('3D热力图')
  7. plt.show()

9. Προηγμένες ρυθμίσεις χρωματικής αντιστοίχισης και χρωματικής γραμμής

Το Matplotlib επιτρέπει την περαιτέρω εξερεύνηση προηγμένων ρυθμίσεων χρωματικών χαρτών και γραμμών χρωμάτων για την κάλυψη πιο περίπλοκων αναγκών. Ακολουθεί ένα παράδειγμα που δείχνει την προσαρμογή μιας γραμμής χρωμάτων και την προσθήκη ετικετών γραμμής χρωμάτων:

  1. fig, ax = plt.subplots()
  2. im = ax.imshow(data, cmap='coolwarm', interpolation='nearest')
  3. # 自定义颜色栏
  4. cbar = plt.colorbar(im, ax=ax, fraction=0.046, pad=0.04)
  5. cbar.set_label('数据值', rotation=270, labelpad=15)
  6. plt.title('高级颜色栏设置')
  7. plt.show()

εικόνα-20240204002506344

10. Δυναμική απεικόνιση χάρτη θερμότητας

Μερικές φορές, θέλουμε να εμφανίσουμε αλλαγές στα δεδομένα με δυναμικό τρόπο. Αυτό μπορεί να γίνει χρησιμοποιώντας το MatplotlibFuncAnimation ολοκληρώσει. Το παρακάτω είναι ένα απλό παράδειγμα δυναμικού χάρτη θερμότητας:

  1. from matplotlib.animation import FuncAnimation
  2. fig, ax = plt.subplots()
  3. data_frames = [np.random.random((10, 10)) for _ in range(10)] # 生成多帧数据
  4. def update(frame):
  5. ax.clear()
  6. im = ax.imshow(data_frames[frame], cmap='Blues', interpolation='nearest')
  7. plt.title(f'动态热力图 - 帧 {frame}')
  8. ani = FuncAnimation(fig, update, frames=len(data_frames), interval=500, repeat=False)
  9. plt.show()

11. Διαδραστικότητα θερμικών χαρτών

Για να κάνετε τον χάρτη θερμότητας πιο διαδραστικό, μπορείτε να χρησιμοποιήσετε το Matplotlib'simshowσυνδυασμόςmplcursorsΗ Βιβλιοθήκη εφαρμόζει την προβολή του δείκτη σημείων δεδομένων:

  1. import mplcursors
  2. fig, ax = plt.subplots()
  3. im = ax.imshow(data, cmap='Greens', interpolation='nearest')
  4. mplcursors.cursor(hover=True).connect("add", lambda sel: sel.annotation.set_text(f'{sel.artist.get_array()[sel.target.index]:.2f}'))
  5. plt.title('交互式热力图')
  6. plt.show()

Με αυτόν τον τρόπο, όταν το ποντίκι αιωρείται πάνω από τα σημεία δεδομένων του χάρτη θερμότητας, θα εμφανιστούν οι αντίστοιχες τιμές.

εικόνα-20240204002444309

12. Τυποποιημένο εύρος δεδομένων

Μερικές φορές, για να δείξουμε πιο καθαρά τις διαφορές στα δεδομένα, μπορεί να χρειαστεί να κανονικοποιήσουμε το εύρος δεδομένων.Αυτό μπορεί να γίνει μέσωNormalizeτάξη για υλοποίηση:

  1. from matplotlib.colors import Normalize
  2. normalized_data = Normalize()(data) # 将数据标准化
  3. fig, ax = plt.subplots()
  4. im = ax.imshow(normalized_data, cmap='YlGnBu', interpolation='bicubic')
  5. plt.colorbar(im, label='标准化值范围')
  6. plt.title('标准化热力图')
  7. plt.show()

13. Χάρτης εξαγωγής θερμότητας

Τέλος, μπορούμε να εξαγάγουμε τον σχεδιασμένο χάρτη θερμότητας ως αρχείο εικόνας μέσω του Matplotlib για περαιτέρω χρήση ή κοινή χρήση:

  1. fig, ax = plt.subplots()
  2. im = ax.imshow(data, cmap='coolwarm', interpolation='nearest')
  3. plt.colorbar(im)
  4. plt.title('导出热力图')
  5. plt.savefig('heatmap.png')

Τα παραπάνω είναι μια σειρά παραδειγμάτων και τεχνικών για τη σχεδίαση διαφορετικών τύπων χαρτών ψυχρής θερμότητας με το Matplotlib. Μέσα από αυτά τα παραδείγματα, αποκτήσαμε μια εις βάθος κατανόηση της δύναμης του Matplotlib και του τρόπου δημιουργίας πολύχρωμων, διαδραστικών και προηγμένων χαρτών θερμότητας προσαρμόζοντας παραμέτρους και εφαρμόζοντας διαφορετικές τεχνικές. Ας ελπίσουμε ότι αυτά τα παραδείγματα παρείχαν χρήσιμη καθοδήγηση για την εργασία σας στην οπτικοποίηση δεδομένων.

Συνοψίζω:

Μέσα από την εισαγωγή αυτού του άρθρου, έχουμε μια εις βάθος συζήτηση για τις διάφορες τεχνικές και τις ρυθμίσεις παραμέτρων της βιβλιοθήκης Matplotlib κατά τη σχεδίαση διαφορετικών τύπων χαρτών ψυχρής θερμότητας. Εδώ είναι τα βασικά σημεία που μάθαμε:

  1. ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ:Μάθαμε για τις βασικές παραμέτρους για τη δημιουργία χαρτών θερμότητας στο Matplotlib, όπως π.χdatacmapinterpolationvminκαιvmax, αυτές οι παράμετροι έχουν σημαντικό αντίκτυπο στην εμφάνιση και την αναγνωσιμότητα του χάρτη θερμότητας.

  2. Κοινοί τύποι χαρτών θερμότητας:Μέσω παραδειγμάτων, συζητήσαμε τις μεθόδους σχεδίασης κοινών τύπων θερμικών χαρτών, όπως βασικούς χάρτες θερμότητας, προσαρμοσμένη χρωματική χαρτογράφηση, σχολιασμούς, χάρτες θερμότητας διαφορετικών σχημάτων, χάρτες θερμότητας μπλοκ, χάρτες θερμότητας πολλαπλών υποχάρτων, τρισδιάστατους χάρτες θερμότητας κ.λπ.

  3. προηγμένες ρυθμίσεις:Μάθαμε πώς να εκτελούμε προηγμένες ρυθμίσεις χρωματικής αντιστοίχισης και χρωματικής γραμμής και πώς να κάνουμε τους χάρτες θερμότητας πιο εξατομικευμένους και ευανάγνωστους προσαρμόζοντας τις ετικέτες της γραμμής χρώματος, τη δυναμική εμφάνιση, τη διαδραστικότητα, τα τυποποιημένα εύρη δεδομένων και άλλες τεχνικές.

  4. Πρακτικές συμβουλές:Εισαγάγαμε ορισμένες πρακτικές τεχνικές, όπως η προσθήκη χρωματικών γραμμών, η εξαγωγή χαρτών θερμότητας ως αρχεία εικόνας, η διαδραστική εμφάνιση χαρτών θερμότητας κ.λπ., για τη βελτίωση της χρηστικότητας και της δυνατότητας κοινής χρήσης των γραφημάτων.