0
0

PsychoPyで線を描く / 色について

Last updated at Posted at 2024-06-29

psychopy.visual.Line

from psychopy import visual

myWin = visual.Window([400,300], monitor="testMonitor", units="deg")

    line = visual.Line(
    myWin, 
    start=(-0.5, -0.5), 
    end=(0.5, 0.5), 
    lineWidth=5,  
    lineColorSpace='rgb255',
    lineColor=(0,255,0)
)

for i in range(300):
    line.draw()
    myWin.flip()

引数がいっぱいある。全部の引数を省略しても、デフォルト値で何かしらの線を書いてれる。引数の大部分を削ったものが上記。上記コードをコピペすればそのまま実行できると思います。実行すると右肩上がりの緑の直線が5秒ほど表示されて消えると思います。300フレーム表示するので、60Hzのディスプレイだと300/60=5秒。場合によってはその半分。

大抵、座標を指定して線をひきたいと思うので、

  • start=(-0.5, -0.5), #開始座標
  • end=(0.5, 0.5),   #終端座標

は明示的に指定することになる。

色を変えたい場合は、

  • lineColor=(0, 1, 0),

というふうに指定する。PsychoPyは色の指定方法が複数あって、'rgb'方式で指定する場合は、RGBのそれぞれを、-1から1の範囲で指定する。colorやcolorSpaceというパラメーターがあるが、指定しても変化がなかった。

色についてはこちら

RGBを -1から1で指定するのに慣れていない人は、colorSpace = 'rgb255' と指定して、0から255の範囲で指定できる。以下、 https://psychopy.org/api/visual/line.html より抜粋

# うす緑の文字列
stim = visual.TextStim(win, 'Color me!',
                   color=(0, 1, 0), colorSpace='rgb')

# ほとんど黒の文字列
stim.colorSpace = 'rgb255'

# もう一度うす緑
stim.color = (128, 255, 128)

ちなみに、色については、色名や #00AAFF という風にも指定できる。https://www.psychopy.org/general/colours.htmlより抜粋

stim = visual.GratingStim(win, color=[1,-1,-1], colorSpace='rgb') #will be red
stim.setColor('Firebrick')#one of the web/X11 color names
stim.setColor('#FFFAF0')#an off-white
stim.setColor([0,90,1], colorSpace='dkl')#modulate along S-cone axis in isoluminant plane
stim.setColor([1,0,0], colorSpace='lms')#modulate only on the L cone
stim.setColor([1,1,1], colorSpace='rgb')#all guns to max
stim.setColor([1,0,0])#this is ambiguous - you need to specify a color space

色空間の指定オプション こちらより抜粋

  • 'named' blue # A named colour space
  • 'hex' #00FF99' # Hex
  • 'rgb' (1, 0, -1)# RGB from -1 to 1
  • 'rgba': (1, 0, -1, 0.5) # RGB + alpha from -1 to 1
  • 'rgb1': # RGB from 0 to 1
  • 'rgb255': (0, 124,255) # RGB from 0 to 255
  • 'hsv': [infrange(0, 360, 1), infrange(0, 1), infrange(0, 1)], # HSV with hue from 0 to 360 and saturation/vibrancy from 0 to 1
  • 'lms': # LMS from -1 to 1
  • 'dkl': # DKL placeholder: Accepts any values

ほかにもいろいろ(ソースまで読まないとでてこない)

  • 'rgba1': # RGB + alpha from 0 to 1
  • 'rgba255': # RGB + alpha from 0 to 255
  • 'hsva': # HSV with hue from 0 to 360 and saturation/vibrancy from 0 to 1 + alpha from 0 to 1
  • 'rec709TFa': # rec709TF adjusted RGB from -4.5 to 1 + alpha from 0 to 1
  • 'srgb': # srgb from -1 to 1
  • 'srgba': [infrange(-1, 1), infrange(-1, 1), infrange(-1, 1), infrange(0, 1)], # srgb from -1 to 1 + alpha from 0 to 1
  • 'lmsa': # LMS + alpha from 0 to 1
  • 'dkla': # DKLA placeholder: Accepts any values + alpha from 0 to 1
  • 'dklCart': # Cartesian DKL placeholder: Accepts any values
  • 'dklaCart': # Cartesian DKLA placeholder: Accepts any values + alpha from 0 to 1

web/X11 color names については こちら https://www.w3schools.com/Colors/colors_names.aspを見よ

color codeは こちら https://html-color-codes.com/を見よ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0