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

السؤال

نشر

لدي الكود التالي الذي يمثل 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...