پراکندگی (Matplotlib Scatter)
«نمودار پراکندگی (Scatter)» نقطه های داده را نشان می دهد. هر نقطه یک مشاهده است. محور x یک ویژگی را دارد و محور y ویژگی دیگر را. برای رسم، از تابع scatter() در Pyplot استفاده می کنیم.
رسم ساده نمودار پراکندگی
دو آرایه هم اندازه بده: یکی برای x و یکی برای y. سپس plt.scatter(x, y) را صدا بزن.
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
plt.scatter(x, y)
plt.show()
مقایسه دو مجموعه داده
می خواهی دو روز مختلف را مقایسه کنی؟ دوبار scatter() صدا بزن تا هرکدام رنگ جدا داشته باشند.
import matplotlib.pyplot as plt
import numpy as np
# روز اول
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
plt.scatter(x, y)
# روز دوم
x = np.array([2, 2, 8, 1, 15, 8, 12, 9, 7, 3, 11, 4, 7, 14, 12])
y = np.array([100, 105, 84, 105, 90, 99, 90, 95, 94, 100, 79, 112, 91, 80, 85])
plt.scatter(x, y)
plt.show()
نکته: رنگ دو نمودار به صورت پیش فرض متفاوت است. بعداً تغییر رنگ را می بینیم.
رنگ دهی ثابت به هر نمودار
با آرگومان color یا c رنگ هر فراخوانی scatter را تعیین کن.
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
plt.scatter(x, y, color="hotpink")
x = np.array([2, 2, 8, 1, 15, 8, 12, 9, 7, 3, 11, 4, 7, 14, 12])
y = np.array([100, 105, 84, 105, 90, 99, 90, 95, 94, 100, 79, 112, 91, 80, 85])
plt.scatter(x, y, color="#88c999")
plt.show()
رنگ متفاوت برای هر نقطه
می خواهی هر نقطه رنگ خودش را داشته باشد؟ یک آرایه رنگ به c بده. توجه کن: اینجا color کار نمی کند.
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
colors = np.array(["red", "green", "blue", "yellow", "pink", "black", "orange", "purple", "beige", "brown", "gray", "cyan", "magenta"])
plt.scatter(x, y, c=colors)
plt.show()
نقشه رنگی (ColorMap)
«نقشه رنگی (Colormap)» فهرست رنگ های عددی است. با cmap آن را تنظیم کن و با آرایه مقادیر c رنگ هر نقطه تعیین می شود.
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
plt.scatter(x, y, c=colors, cmap="viridis")
plt.show()
می خواهی نوار رنگ را هم ببینی؟ plt.colorbar() را اضافه کن.
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
plt.scatter(x, y, c=colors, cmap="viridis")
plt.colorbar()
plt.show()
اندازه نقاط با s
با آرگومان s اندازه هر نقطه را بده. طول آرایه اندازه باید با x و y برابر باشد.
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])
plt.scatter(x, y, s=sizes)
plt.show()
شفافیت نقاط با alpha
با alpha شفافیت بده تا نقاط روی هم بهتر دیده شوند.
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])
plt.scatter(x, y, s=sizes, alpha=0.5)
plt.show()
ترکیب اندازه، رنگ و شفافیت
برای جلوه بهتر، از مقادیر تصادفی استفاده کن و colormap بده. شفافیت نیمه شفاف کمک می کند تراکم دیده شود.
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randint(100, size=(100))
y = np.random.randint(100, size=(100))
colors = np.random.randint(100, size=(100))
sizes = 10 * np.random.randint(100, size=(100))
plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap="nipy_spectral")
plt.colorbar()
plt.show()
جمع بندی سریع
scatter(x, y)هر مشاهده را نقطه می کشد.colorیاcرنگ ها را تعیین می کند.sاندازه نقطه ها را می دهد.alphaشفافیت را تنظیم می کند.cmapباcolorbar()بهتر دیده می شود.
برای چیدمان چند نمودار به زیرنمودار Matplotlib برو. برای ادامه نمودارها، صفحه نمودار میله ای Matplotlib را ببین. همین طور بخش پراکندگی Matplotlib را نشانه گذاری کن.