How to plot categorical data and encode it through colour and shape size? Given the following data set:

 

I am wondering what kind of plotting technique can be used to produce such a visualization:


The Skill attribute is mapped to the y-axis, while the Participant is on the x-axis. The other two attributes are encoded as colour and size features of each point in the visualization.

Although I am trying to get this done with Pandas and pdvega, I'd be happy to learn another tool that could render that. But most importantly, I would like to know the proper technical terms used to describe this type of visualization.

I have reviewed various Pandas tutorials, but the problem is that the examples provided are targeting numeric data, rather than categories. I am thinking that perhaps I could partially fake it by turning each category into a number, then somehow overriding the labels on the axis - but it sounds like a convoluted solution to a mundane problem, so there ought to be a nicer way to do it.

Here is the raw data that can be used to produce a Pandas dataframe with the data above:

import pandas as pd
raw = {"Age":{"0":"27..35","1":"18..26","2":"18..26","3":"18..26","4":"18..26"},
       "Skill":{"0":"intermediate","1":"expert","2":"novice","3":"intermediate","4":"expert"},
       "Gender":{"0":"M","1":"M","2":"F","3":"F","4":"M"}}
df = pd.DataFrame(raw)
The easiest solution I found is Altair:

import altair as alt

# assume df contains the DataFrame from the question + a numeric column `Participant`
alt.Chart(df).mark_point().encode(y='Skill', x='Participant', size='Age', color='Gender')


This is what gets rendered out of the box: