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

إضافة نصوص توضيحية ضمن خلايا ال Heatmap باستخدام Seaborn في بايثون

إياد أحمد

السؤال

لدي الكود التالي الذي يمثل Heatmap:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
data = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10],
				[11, 12, 13, 14, 15]])
fig, ax = plt.subplots()
ax = sns.heatmap(data, fmt="")

الخرج:
index.png.ff3d9fac1b966255e22ce5749552af34.png
ما أحتاجه هو أن تتم إضافة عبارات توضيحية لكل خلية، على سبيل المثال أريد أن تكون عناصر القائمة التالية موضوعة ضمن كل خلية بالترتيب:

text = np.array([['A', 'B', 'C', 'D', 'E'], ['F', 'G', 'H', 'I', 'J'],
				['K', 'L', 'M', 'N', 'O']])

أيضاً كيف يمكنني أن أجعل العبارات التوضيحية مُشكلةً من القيم data ومن ال text. أي مثلاً أريد أن يكون النص التوضيحي للخلية الأولى هو:

 A
1.00

والخلية الثانية:

 B
2.00

وهكذا..

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

لإضافة نصوص توضيحية نستخدم الوسيط annot ونمرر له قائمة تحتوي العبارات التوضيحية للخلايا بالترتيب كما يلي:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
data = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10],
				[11, 12, 13, 14, 15]])
text = np.array([['A', 'B', 'C', 'D', 'E'], ['F', 'G', 'H', 'I', 'J'],
				['K', 'L', 'M', 'N', 'O']])
fig, ax = plt.subplots()
ax = sns.heatmap(data, annot=text, fmt="")

الخرج:
1.png.2b5a7b254b73e359fb7969f892009db0.png
الآن للدمج بين data و ال text يمكنك استخدام الطريقة التالية:

import seaborn as sns
import matplotlib.pyplot as plt

import numpy as np
data = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10],
				[11, 12, 13, 14, 15]])
text = np.array([['A', 'B', 'C', 'D', 'E'],
				['F', 'G', 'H', 'I', 'J'], ['K', 'L', 'M', 'N', 'O']])
# نقوم بدمجهم يدوياً
formatted_text = (np.asarray(["{0}\n{1:.2f}".format(
	text, data) for text, data in zip(text.flatten(), data.flatten())])).reshape(3, 5)
fig, ax = plt.subplots()
ax = sns.heatmap(data, annot=formatted_text, fmt="")

الخرج:
3.png.997bdbb290cf7fe4f76cb82af2fd9607.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • -2

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

import seaborn as sns
import pandas as pd
import numpy as np
 
# قاعدة البيانات
df = pd.DataFrame(np.random.random((10,10)), columns=["a","b","c","d","e","f","g","h","i","j"])

# رسم الخريطة
sns.heatmap(df, annot=True, annot_kws={"size": 7})

وتظهر كالتالي:

61c8ad99ed641_download(1).png.9e69a1b271f29d42ed6bea5a835671c7.png

بعدذلك تستطيع دمجها مع أي رموز أخرى كما في الإجابة السابقة.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...