اذهب إلى المحتوى
  • 0

رسم خريطة حرارية heatmap  ثنائية الأبعاد باستخدام Matplotlib | بايثون

Ali Ismael

السؤال

Recommended Posts

  • 1

خريطة التمثيل اللوني ثنائية الأبعاد هي أداة عرض بيانات تساعد على تمثيل حجم الظاهرة في شكل ألوان. وفي بايثون ، يمكننا رسم خرائط حرارية ثنائية الأبعاد باستخدام حزمة Matplotlib. وتحديداً من خلال الدالة imshow مع تحديد الوسيط autumn كقيمة للوسيط cmap (أو hot) الذي يمثل الخريطة اللونية:

import numpy as np
import matplotlib.pyplot as plt
# توليد بيانات عشوائية
data = np.random.random(( 20 , 20 ))
# imshow استخدام الدالة 
plt.imshow( data , cmap = 'autumn' , interpolation = 'nearest' )
# وضع عنوان
plt.title( "2-D Heat Map" )
plt.show()

والنتيجة:
index.png.87031f090043c4c633b53a7fcd2194f2.png
أو من خلال الدالة pcolormesh حيث نمرر لها البيانات واسم الخريطة اللونية كما يلي:

import matplotlib.pyplot as plt
import numpy as np
data = np.random.rand( 20 , 20 )
plt.pcolormesh( data , cmap = 'hot' )
plt.title( '2-D Heat Map' )
plt.show()

كما يمكنك استخدام الدالة heatmap من seaborn كالتالي:

import numpy as np
import seaborn as sns
import matplotlib.pylab as plt
data = np.random.rand( 20 , 20 )
ax = sns.heatmap( data , cmap = 'hot' )
plt.title( "2-D Heat Map" )
plt.show()
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

توجد العديد من الأشكال للخرائط الحرارية، ولعل أكثرها استخداما هي تلك التي توضح نسبة كل خلية عن طريق اظهار الرقم داخل الخلية والتعبير عنه بلون تزداد شدته كلما زادت نسبتها، المثال التالي يوضح هذا:

# استدعاء المكتبات
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

dishes = ["cucumber", "tomato", "fish", "meat",
              "potato", "rice", "vegetables"]
people = ["ahmed", "ali.", "eyad",
           "lamiaa", "mohammed", "yousef", "anas"]

harvest = np.array([[0.8, 2.4, 2.5, 3.9, 0.0, 4.0, 0.0],
                    [2.4, 0.0, 4.0, 1.0, 2.7, 0.0, 0.0],
                    [1.1, 2.4, 0.8, 4.3, 1.9, 4.4, 0.0],
                    [0.6, 0.0, 0.3, 0.0, 3.1, 0.0, 0.0],
                    [0.7, 1.7, 0.6, 2.6, 2.2, 6.2, 0.0],
                    [1.3, 1.2, 0.0, 0.0, 0.0, 3.2, 5.1],
                    [0.1, 2.0, 0.0, 1.4, 0.0, 1.9, 6.3]])


fig, ax = plt.subplots()
im = ax.imshow(harvest)

# كل ما تريد عرضه
ax.set_xticks(np.arange(len(peoples)))
ax.set_yticks(np.arange(len(dishes)))
# تسمية المحاور
ax.set_xticklabels(people)
ax.set_yticklabels(dishes)

# تنظيم شكلها
plt.setp(ax.get_xticklabels(), rotation=45, ha="right",
         rotation_mode="anchor")

# تسمية العناصر
for i in range(len(dishes)):
    for j in range(len(people)):
        text = ax.text(j, i, harvest[i, j],
                       ha="center", va="center", color="w")

ax.set_title("Favourites")
fig.tight_layout()
plt.show()

وتظهر نتيجة العرض هكذا:

616de46340559_Figure2021-10-18231328.png.c2e80c7a228642994b5a2487fd5eb1b0.png

هناك الكثير من الميزات الاضافية مثل تغيير الالوان أو اظهار الأرقام كنسب أو رسم أكثر من خريطة حرارية سوية وهكذا

ويمكنك الاستعانة ب seaborn لتوضيح قيمة كل لون يظهر في الرسمة عن طريق شريط جانبي هكذا:

import numpy as np
import seaborn as sns
import matplotlib.pylab as plt

data = np.random.rand(10, 12)
ax = sns.heatmap(data, linewidth=0.5)
plt.show()

sROf4.png.4ec122d71360790f39a5b8b9bcdbaa4c.png

تم التعديل في بواسطة Ahmed Sharshar
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...