Подтвердить что ты не робот

MatPlotLib: несколько наборов данных на одном и том же участке разброса

Я хочу построить несколько наборов данных на одном и том же участке разброса:

cases = scatter(x[:4], y[:4], s=10, c='b', marker="s")
controls = scatter(x[4:], y[4:], s=10, c='r', marker="o")

show()

В приведенном выше примере показан только последний scatter()

Я также пробовал:

plt = subplot(111)
plt.scatter(x[:4], y[:4], s=10, c='b', marker="s")
plt.scatter(x[4:], y[4:], s=10, c='r', marker="o")
show()
4b9b3361

Ответ 1

Вам нужна ссылка на объект Axes для продолжения рисования на одном и том же подзаголовке.

import matplotlib.pyplot as plt

x = range(100)
y = range(100,200)
fig = plt.figure()
ax1 = fig.add_subplot(111)

ax1.scatter(x[:4], y[:4], s=10, c='b', marker="s", label='first')
ax1.scatter(x[40:],y[40:], s=10, c='r', marker="o", label='second')
plt.legend(loc='upper left');
plt.show()

enter image description here

Ответ 2

Я не знаю, он отлично работает для меня. Точные команды:

import scipy, pylab
ax = pylab.subplot(111)
ax.scatter(scipy.randn(100), scipy.randn(100), c='b')
ax.scatter(scipy.randn(100), scipy.randn(100), c='r')
ax.figure.show()

Ответ 3

Я столкнулся с этим вопросом, поскольку у меня была такая же проблема. Хотя принятый ответ работает хорошо, но с версией matplotlib 2.1.0, довольно просто иметь две диаграммы рассеяния на одном графике без ссылки на Axes

import matplotlib.pyplot as plt

plt.scatter(x,y, c='b', marker='x', label='1')
plt.scatter(x, y, c='r', marker='s', label='-1')
plt.legend(loc='upper left')
plt.show()