Python Scatter Plot with Multiple Y values for each X

How can I plot different numbers of Y values for each X value

Just plot each group separately:

for xe, ye in zip(x, y):
    plt.scatter([xe] * len(ye), ye)

and how can I change the X axis from being the numbers 1 and 2 to text categories “cat1” and “cat2”.

Set ticks and tick labels manually:

plt.xticks([1, 2])
plt.axes().set_xticklabels(['cat1', 'cat2'])

Full code:

import matplotlib.pyplot as plt
import numpy as np

y = [(1,1,2,3,9),(1,1,2,4)]
x = [1,2]

for xe, ye in zip(x, y):
    plt.scatter([xe] * len(ye), ye)

plt.xticks([1, 2])
plt.axes().set_xticklabels(['cat1', 'cat2'])

plt.savefig('t.png')

enter image description here

Leave a Comment