Полагаю, вам просто нужно упорядочить данные таким образом, чтобы сначала отображались более крупные маркеры. Я не знаю, как вы храните ваши данные, поэтому вот способ, который ориентирован на данные:
x = [1.5, 1.5, 1.5, 1.5, 1.5, 2.6, 2.6, 2.6, 2.6, 2.6]
y = np.array([1.5, 3.0, 7.4, 20., 20., 1.5, 3.0, 7.4, 20., 20.])
s = np.array([100, 100, 100, 50, 100, 100, 100, 100, 50, 100])
c = np.array(['k', 'k', 'k', 'r', 'k', 'k', 'k', 'k', 'r', 'k'])
, если вы просто отобразите его как
from matplotlib import pyplot as plt
fig, ax = plt.subplots()
ax.scatter(x, y, s=s, c=c)
Вы получите свою проблему, так как черные маркеры закрывают меньшие красные. Насколько я знаю, в matplotlib нет функции для решения этой проблемы, поэтому сначала нужно отсортировать свои баллы по s
в обратном порядке.
import numpy as np
idx_sort = np.argsort(s)[::-1]
x, y, s, c = map(lambda vv: np.take(vv, idx_sort), [x, y, s, c])