matplotlib использует однозначное окно для всех последующих графиков - PullRequest
0 голосов
/ 07 февраля 2020

Я ищу рабочий процесс, который использует одно окно для отображения всех графиков. Последующие графики просто перезаписывают существующий график и не блокируют реплей. Rstudio имеет одну графическую панель, которая всегда показывает последний график. Возможен ли подобный рабочий процесс из python repl (не из записной книжки)?

Например, при запуске следующего кода создается два windows: один для рисунка 1, а другой для рисунка 2. Я хотел бы, чтобы вторая фигура заменила существующую и использовала только одно окно для всех графиков.

import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset('titanic')

sns.pairplot(data[['fare','class']])
plt.show(block=False)

sns.pairplot(data[['fare','age']])
plt.show(block=False)

1 Ответ

0 голосов
/ 08 февраля 2020

После долгих поисков и поисков этой превосходной статьи 1002 * я смог найти решение своей проблемы. Хитрость заключается в том, чтобы получить ссылку на фигуру и ось с самого начала для манипулирования на последующих графиках.

Другой ключевой способ - передать объект оси методам построения. Вы можете получить ссылку на ось на текущем рисунке, используя fig.gca():

import matplotlib.pyplot as plt
import seaborn as sns

data = sns.load_dataset('titanic')

# create initial references
fig, ax = plt.subplots()

# pass in the current axis to the `ax` argument
sns.scatterplot(x=data['age'], y =data['age'], ax=fig.gca())
plt.draw()
plt.show(block=False)

# need to clear the figure between calls
fig.clf()
sns.scatterplot(x=data['age'], y =data['fare'], ax=fig.gca())
plt.draw()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...