title: scatterplot in python, make color and shape according to different categorical variables
body: <p>I need to generate a scatter plot, where multiple categorical variables can be represented by color and shape of the scatters. For example,</p>
  
  <pre><code>df = pd.DataFrame({'animals':pd.Series(['tiger','cheetah','lion','giraffe','elephant','gorilla']),
                 'weight': pd.Series([200,120,240,240,400,300]),
                 'meal': pd.Series([20,10,40,15,40,30]),
                 'region': pd.Categorical(["Asian","American","African","African",'Asian','American']),
                'gender': pd.Categorical(["female","female","male","female",'male','male']),
                'group': pd.Series([True, False, False, True, True, True])})
  
  sns.lmplot(data = df, x = 'weight', y = 'meal', hue = 'region', palette = 'Dark2',
         fit_reg = False, scatter_kws={"s": 20}, size = 4)
  </code></pre>
  
  <p>This will create a plot, where the region is represented by different colors.
  But I also need to represent the gender, in different shapes. So the color shows the region and the shape shows the gender. 
  Is there a way to achieve this? thanks for any suggestion!</p>
  
  <p><a href="https://i.stack.imgur.com/HiGpf.png" rel="nofollow noreferrer">enter image description here</a></p>