В этом случае лучше использовать plt.subplots()
, чтобы вы могли повторно использовать тот же axis
. Итерация цвета предоставляется бесплатно, но я оставил ее, не уверен, что вы предпочитаете rgbk
.
По возможности избегайте циклов for в Python для лучшей читаемости и производительности.
import matplotlib.pyplot as plt
d = {1: [1, 2, 3, 4, 5], 3: [3, 6, 9, 12, 15], 5: [5, 10, 15, 20, 25]}
colors = list("rgbk")
fig, ax = plt.subplots()
for x, ys in d.items():
ax.scatter([x] * len(ys), ys, color = colors.pop(), label=x)
plt.legend()
plt.show()

Если вы имеете дело с большими массивами, подумайте об использовании numpy
. В этом случае вы можете изменить масштаб key
, например, следующим образом:
import matplotlib.pyplot as plt
import numpy as np
d = {1: [1, 2, 3, 4, 5], 3: [3, 6, 9, 12, 15], 5: [5, 10, 15, 20, 25]}
colors = list("rgbk")
fig, ax = plt.subplots()
for x, ys in d.items():
ax.scatter(np.full_like(ys, x), ys, color = colors.pop(), label=x)
plt.legend()
plt.show()