¥Ç¡¼¥¿¤ò»¶ÉÛ¿ÞÅù¤Çɽ¼¨¤¹¤ë¤È¤¡¢¥Ç¡¼¥¿¿ô¤¬Â¿¤¯¤Æ²èÌ̤¬ÅÀ¤ÇÅɤêÄÙ¤ì¤Æ¤·¤Þ¤¦·Ð¸³¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£
²¼¿Þ¤Ï10000¸Ä¤Î¥Ç¡¼¥¿¤ò»¶ÉÛ¿Þ¤Çɽ¼¨¤·¤¿Îã¤Ç¤¹¡£²¼¿Þ¡Êº¸¡Ë¤ÏÃæ±û¤ÎÂÓ¤ÎÉôʬ¤¬ÅÀ¤ÇÅɤêÄÙ¤ì¤Æ¤¤¤Þ¤¹¡£ÉÁ²èÎΰè¤òÂ礤¯¤¹¤ë¤«¡¢²¼¿Þ¡Ê±¦¡Ë¤Î¤è¤¦¤ËÅÀ¤Î¥µ¥¤¥º¤ò¾®¤µ¤¯Ä´À᤹¤ë¤³¤È¤ÇÅɤêÄ٤줬¤Ê¤¯¤Ê¤ê¡¢Àº³Î¤Ê¥Ç¡¼¥¿Ê¬ÀÏ¡¢¤½¤·¤ÆÈþ¤·¤¯É½¼¨¤Ç¤¤Þ¤¹¡£
¤·¤«¤·¡¢¸ÇÄêŪ¤Ê¥Ç¡¼¥¿¿ô¤ò°·¤¦¾ì¹ç¤ÏÌäÂê¤È¤Ê¤ê¤Þ¤»¤ó¤¬¡¢¥Ç¡¼¥¿¿ô¤¬ÊѤï¤ë¤è¤¦¤Ê¥·¥Á¥å¥¨¡¼¥·¥ç¥ó¤Î¾ì¹ç¤Ï¤½¤ÎÅÔÅÙÄ´À᤹¤ëɬÍפ¬¤¢¤êÌÌÅݤǤ¹¡£
Ëܵ»ö¤Ç¤Ï¡¢¥Ç¡¼¥¿¿ô¤Ë±þ¤¸¤ÆºÇŬ¤ÊÅÀ¤Î¥µ¥¤¥º¤ò¼«Æ°·×»»¤¹¤ë¼°¤È¤½¤ÎƳ½Ð¤ò¼¨¤·¤Þ¤¹¡£·ëÏÀ¤ò¼¨¤¹¤È¡¢x¸Ä¤ÎÅÀ¤òÉÁ²è¤¹¤ë¤È¤¤Î¸Ä¡¹¤ÎÅÀ¤Î¥µ¥¤¥ºs(x)¤Ï¼¡¼°¤ÇÆÀ¤é¤ì¤Þ¤¹¡£
s(x) = S1 * S¡ç / (S1 * x + S¡ç)
Î㤨¤Ð¡¢S1=36px¡¢S¡ç=3600px¤Î¾ì¹ç¡¢s(x) = 3600 / (x + 100) ¤È¤Ê¤ê¤Þ¤¹¡£100ÅÀÉÁ²è¤¹¤ë¤È¤¸Ä¡¹¤ÎÅÀ¤Î¥µ¥¤¥º¤Ïs(100)=18px¤ÇÉÁ²è¤µ¤ì¡¢Æ±Íͤˤ·¤Æ1000ÅÀÉÁ²è¤¹¤ë¤È¤s(1000)=3.3px¡¢10000ÅÀÉÁ²è¤¹¤ë¤È¤s(10000)=0.4px¤È¤Ê¤ê¤Þ¤¹¡£
Python¥×¥í¥°¥é¥à¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£¥Ç¡¼¥¿¿ôlen(data)¤Ë±þ¤¸¤ÆÅÀ¤ÎÉÁ²è¥µ¥¤¥ºs¤ò¼«Æ°·×»»¤·¤Æ¤¤¤Þ¤¹¡£
import numpy as np import matplotlib import matplotlib.pyplot as plt data = np.random.normal(size=1000) # normal dist. S_1, S_m = 36, 3600 s = S_1 * S_m / (S_1 * len(data) + S_m) # see plt.title(f"count={len(data)}") plt.ylim((-4.0, 4.0)) plt.scatter(x=np.arange(len(data)), y=data, s=s) plt.savefig(f"sample.{len(data)}.png") plt.close()
°Ê¹ß¤Ç·ëÏÀ¤Ë»ê¤ë¤Þ¤Ç¤ÎƳ½Ð¤ò¼¨¤·¤Þ¤¹¡£
JUGEM¥Æ¡¼¥Þ¡§¥³¥ó¥Ô¥å¡¼¥¿