رسم نمودار پراکندگی با scatter در Matplotlib پایتون

 

در این مقاله نحوه ترسیم نمودارهای پراکندگی با کمک scatter از کتابخانه Matplotlib پایتون آموزش داده خواهد شد. قبل از شروع مطالعه این مقاله لازم است با مفاهیم اصلی در کتابخانه Matplotlib آشنا باشید. در صورتیکه با این کتابخانه آشنایی ندارید توصیه می‌شود ابتدا مقاله زیر را مطالعه کنید:


در نمودار پراکندگی به جای اینکه نقاط توسط خطوط به هم متصل شوند نقاط جداگانه با یک اشکال مختلف نشان داده می‌شوند. به مثال زیر توجه کنید:

for marker in ['o', 'x', '+', 'v', '^', '<', '>', 's', 'd']:
    plt.plot(np.random.rand(3), np.random.rand(3), marker,
             label="marker='{0}'".format(marker))
    
plt.legend(bbox_to_anchor =(1.02, 0.9))
plt.show()
Image for post
Image for post

همانطور که مشاهده می‌کنید تابع plot قابلیت این را دارد که نمودار پراکندگی را ترسیم کند. اما در کتابخانه Matplotlib تابعی با قابلیت‌های بیشتر به نام scatter تعریف شده است که با کمک آن می‌توانید نمودارهای پراکندگی خود را ترسیم کنید. تفاوت اصلی این تابع با plot در این است که شما می‌توانید سایز، رنگ زمینه، رنگ مرز و ... هر نقطه را بصورت جداگانه کنترل کنید:

x = np.random.randn(100)
y = np.random.randn(100)
colors = np.random.rand(100)

sizes = 1000 * np.random.rand(100)

plt.scatter(x, y, c=colors, s=sizes, 
			alpha=0.3, cmap='viridis')
plt.colorbar();
Image for post
Image for post

همانطور که مشاهده می‌کنید تابع colorbar طیف رنگی که در نمودار وجود دارد را نشان می‌دهد. درمورد کالرمپ هم در مقاله مربوط به هیستوگرام صحبت شد:


در نمودارهای پراکندگی رنگ و اندازه هر نقطه برای انتقال اطلاعات استفاده می‌شود از اینرو برای داده‌های چندبعدی توصیه می‌شود. برای مثال در ادامه یکی از داده‌هایی که هر مهندس داده‌ای با اون آشناست و مربوط به گل‌های زنبق از Scikit که در آن هر نمونه یکی از سه گونه گل است که اندازه گلبرگ و کاسبرگ آن به دقت اندازه گیری شده است استفاده می‌شود.

from sklearn.datasets import load_iris
iris = load_iris()
features = iris.data.T

plt.scatter(features[0], features[1], alpha=0.2,
            s=100*features[3], c=iris.target, cmap='viridis')

plt.xlabel(iris.feature_names[0])
plt.ylabel(iris.feature_names[1]);
Image for post
Image for post

همانطور که مشاهده می‌کنید این نمودار پراکندگی به ما توانایی کشف همزمان چهار بعد مختلف داده را می‌دهد: مکان (x ، y) هر نقطه مربوط به طول و عرض کاسبرگ است، اندازه نقطه مربوط به پهنای گلبرگ است، و رنگ مربوط به گونه‌های متفاوت گل است. خاصیت چند رنگ یا چند ویژگی نمودارهای پراکندگی می‌تواند برای کاوش و ارائه داده‌ها مفید باشند.