المخططات المبعثرة للترميز اللوني حسب قيم الأعمدة في بايثون
في تصور البيانات، يمكن أن يؤدي تعيين الألوان إلى فئات مختلفة إلى تعزيز الوضوح والكشف عن الأنماط. هذه الوظيفة متاحة بسهولة في ggplot2 لـ R، ولكن كيف يمكننا تحقيق الشيء نفسه في Python باستخدام pandas وmatplotlib؟
التحديث: تحسينات Seaborn
منذ الإجابة الأصلية ، برزت Seaborn كمكتبة قوية لإنشاء مؤامرات إعلامية وجذابة بصريًا. توفر تحديثاتها الأخيرة وظائف ملائمة لتلوين المخططات المبعثرة بناءً على قيم الأعمدة:
نهج Pandas الأصلي و Matplotlib
بالنسبة لأولئك الذين يبحثون عن نهج مباشر مع Matplotlib، إليك وظيفة مخصصة تقوم بتعيين الألوان إلى النقاط بناءً على عمود تصنيفي:
import matplotlib.pyplot as plt
import pandas as pd
def dfScatter(df, xcol='Height', ycol='Weight', catcol='Gender'):
fig, ax = plt.subplots()
categories = np.unique(df[catcol])
colors = np.linspace(0, 1, len(categories))
colordict = dict(zip(categories, colors))
df["Color"] = df[catcol].apply(lambda x: colordict[x])
ax.scatter(df[xcol], df[ycol], c=df["Color"])
return fig
تقوم هذه الوظيفة بإنشاء قاموس ألوان من قيم الفئات الفريدة وتعيين الألوان المقابلة لنقاط البيانات. يتم بعد ذلك إنشاء المخطط المبعثر بنقاط مرمزة بالألوان.
مثال
باستخدام إطار البيانات النموذجي المقدم:
df = pd.DataFrame({'Height': np.append(np.random.normal(6, 0.25, size=5), np.random.normal(5.4, 0.25, size=5)),
'Weight': np.append(np.random.normal(180, 20, size=5), np.random.normal(140, 20, size=5)),
'Gender': ["Male", "Male", "Male", "Male", "Male",
"Female", "Female", "Female", "Female", "Female"]})
استدعاء وظيفة dfScatter مع إطار البيانات:fig = dfScatter(df)
fig.savefig('color_coded_scatterplot.png')
ينتج مخططًا مبعثرًا حيث يتم تلوين النقاط حسب الجنس:[صورة مخطط مبعثر ملون حسب الجنس]Seaborn's Advanced توفر الميزات ووظيفة dfScatter المخصصة خيارات مرنة لإضافة الترميز اللوني إلى المخططات المبعثرة في Python، مما يجعل تصور البيانات أكثر إفادة وجاذبية بصريًا. تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3