MatPlotLib: Кілька наборів даних на одному і тому ж графіку розсіювання


78

Я хочу побудувати кілька наборів даних на одному графіку розсіювання:

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()

1
Його накладання на одному рядку.
nate c

Відповіді:


127

Вам потрібно посилання на 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()

введіть тут опис зображення


12
Що робить 111в fig.add_subplot(111)середньому?
Темак

2
Це розташування підграфів у цьому графіку. Перше число - це скільки рядків додаткових сюжетів; друге число - скільки стовпців підзагородок; третє число - це підграф, про який ви зараз говорите. У цьому випадку є один рядок і один стовпець підграфів (тобто один підграф), і осі говорять про перший з них. Щось на зразок fig.add_subplot (3,2,5) буде нижньою лівою підпрограмою в сітці з трьох рядків і двох стовпців.
Ніл Сміт

26

Я зіткнувся з цим запитанням, оскільки мав точно таку ж проблему. Незважаючи на те, що прийнята відповідь працює добре, але з версією 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()

8

Не знаю, у мене це добре працює. Точні команди:

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()

1
Мої набори даних перекривались :)
Остін Річардсон,

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.