Нет встроенной опции, чтобы отделить цвет лица маркера от края. Следовательно, чтобы сделать края маркера видимыми, нужно нарисовать два графика, один для граней, а поверх этого один для краев.
import numpy as np; np.random.seed(32)
import matplotlib.pyplot as plt
x = np.arange(30)
y = np.cumsum(np.random.randn(30))
fig, (ax, ax2) = plt.subplots(1,2, figsize=(5.5,2))
## plot
ax.plot(x,y, marker="s", ms=15, color="C3")
ax.plot(x,y, marker="s", ms=15, color="none", mec="black")
## scatter
ax2.scatter(x,y, marker="s", s=15**2, facecolor="C3")
ax2.scatter(x,y, marker="s", s=15**2, facecolor="none", edgecolor="black")
ax.set_title("plot")
ax2.set_title("scatter")
fig.tight_layout()
plt.show()
