Подзаговор matplotlib как скопировать топор из одного подзаговора в другой? - PullRequest
0 голосов
/ 04 августа 2020

Как я могу сделать так, чтобы моя третья часть сюжета была перекрытием первых двух без необходимости просто копировать / вставлять код? Используя Python 3.8.3, matplotlib 3.2.1.

x1, y1 = [(2,7,1), (6,2,2)]
x2, y2 = [(8,3,0), (1,4,9)]

fig, ax = plt.subplots(3,1, sharex=True, sharey=True, figsize=(15, 10));
ax1, ax2, ax3 = ax
ax1.scatter(x1, y1,  c='red', label='Set1');
ax2.scatter(x2, y2, c='black', label='Set2');

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

1 Ответ

0 голосов
/ 04 августа 2020

Вы можете записать его как for l oop с помощью if-тестов:

from matplotlib import pyplot as plt

x1, y1 = [(2,7,1), (6,2,2)]
x2, y2 = [(8,3,0), (1,4,9)]

fig, axes = plt.subplots(3,1, sharex=True, sharey=True, figsize=(15, 10))
for i, ax in enumerate(axes):
    if i != 1:
        ax.scatter(x1, y1, c='red', label='Set1')
    if i != 0:
        ax.scatter(x2, y2, c='black', label='Set2')
plt.show()

PS: В отличие от других языков программирования, в Python точка с запятой в конце операторов не требуется. (Python использует символы новой строки и отступы, чтобы знать, что идет вместе.) Однако при использовании в записных книжках Jupyter результат последней строки блока распечатывается. Многие функции matplotlib возвращают некоторые значения, которые часто не используются (например, scatter возвращает список точек). Чтобы подавить такой отвлекающий вывод, можно использовать точку с запятой в самом последнем операторе блока Jupyter.

итоговый сюжет

...