psychopy.org | Reference | Downloads | Github

Rating Scale Question

Hi All!

I am REALLY new at Psychopy and attempting to make one of my first experiments for my PhD. I basically am doing a study on social influence, so want to present two rating scales, one that the participants responds to, and one that has a groups average that the participant can see and maybe be influenced by. Thus, I want to randomize the start position of the slider for the “groups average rating”, store this position and also make it so the slider cannot be adjusted by the participant, i.e. make that rating scale irresponsive

Can anyone help me?

Thanks in advance!

I don’t actually know much about RatingScale - it was added by @jeremygray - so I don’t know if this is possible. To set the start location the parameter markerStart should do what you need:
http://www.psychopy.org/api/visual/ratingscale.html
but not allowing people to change the values might not be possible without some ugly hacks, like using BufferImageStim to take a snapshot of your RatingScale as an image and then just drawing that snapshot.

More simply you could print the current value and/or simulate a rating scale by drawing a straight line with a marker on it?

The trick to making it unresponsive is to set a minTime=0, and also set a maxTime that is just a little longer. Here’s a minimal version entirely in code:

from psychopy import visual
from numpy import random

win = visual.Window(size=(1440, 900), fullscr=False)

rating_subj = visual.RatingScale(win=win, name='rating_subj', pos=[-.4, -0.4], scale='you')

positions = range(7)
random.shuffle(positions)
start = positions[0] + 1
rating_avrg = visual.RatingScale(win=win, name='rating_avrg', pos=[0.4, -0.4], scale='group',
    markerStart=str(start), minTime=0, maxTime=0.001)

while rating_subj.noResponse:
    rating_subj.draw()
    rating_avrg.draw()
    win.flip()

To do this through the Builder, do the random.shuffle(position) and start = positions[0] + 1 part in a code component. For rating_avrg, use the customize everything field in the rating component, and put this code there:

pos=[0.4, -0.4], scale='group', markerStart=str(start), minTime=0, maxTime=0.001

1 Like

Thank you for your help!

A post was split to a new topic: Change position of RatingScale accept button