Можно ли обновить встроенные графики в Python (Spyder)? - PullRequest
0 голосов
/ 20 января 2020

Настройка: Anaconda 3 (Win10 64), Spyder 4 и Python 3.7. I Python Графика по умолчанию (Inline). Я все еще новичок в Python, но я посмотрел вокруг и не нашел ответа, который решает мою проблему до сих пор. Спасибо всем заранее.

Так что в этой настройке всякий раз, когда я создаю график, используя matplotlib, он появляется на панели графиков Spyder. Например,

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.DataFrame(np.random.randint(0,100,size=(100, 1)), columns=list('A'))
bp = df.boxplot(column = 'A')

создает коробочный график. Теперь, если я хочу добавить заголовок к сюжету, код будет

bp.set_title("This Title")

Вот где у меня возникают некоторые проблемы. Если я запускаю весь блок вместе

df = pd.DataFrame(np.random.randint(0,100,size=(100, 1)), columns=list('A'))
bp = df.boxplot(column = 'A')
bp.set_title("This Title")

, тогда я получаю блок-диаграмму с заголовком «Этот заголовок», отображаемым на панели графиков, , что я и хочу.

Однако, если я запускаю приведенный выше код построчно в консоли I Python, во 2-й строке будет получен блокпост, как и ожидалось, но 3-я строка не повлияет на изображение на графике панель, так что изображение на панели графиков по-прежнему не имеет заголовка

Теперь, если я go в Инструменты> Настройки> I Python Консоль> Графика и установить графику backend для Automati c вместо встроенного по умолчанию, затем, когда я построчно запускаю код в консоли, я получаю изображение, которое всплывает в другом окне, и оно выполняет обновление / обновление на основе по новым строкам вошел в консоль. Я понимаю, что встроенные графики должны быть stati c, но я подумал, что видел другой пост, в котором кто-то сказал, что можно обновить встроенные графики? Итак, теперь мои вопросы:

  1. Делать графики только обновлять / обновлять sh по строковым кодам в консоли I Python, если графический бэкэнд не stati c как встроенный?
  2. Почему я получаю другой результат, когда я запускаю кодовые блоки по сравнению с построчными?
  3. Если есть возможность обновить встроенные графики (предпочтительно на панели графиков Spyder), как ты делаешь это? Я пробовал различные способы перерисовки графиков, например
plt.show()
plt.draw()
bp.get_figure().canvas.draw()

, но ни один из этих обновлений не обновляет изображение в области печати. Я подумал, что даже если я не смогу обновить изображение, я, по крайней мере, смогу перерисовать его (то есть 2-е изображение появится на панели графика с характеристиками обновления). Но ничего, что я пробовал, до сих пор не сработало Пожалуйста, сообщите и еще раз спасибо.

1 Ответ

1 голос
/ 20 января 2020

( Сопровождающий Spyder здесь ) О ваших вопросах:

Делать графики только обновлять / обновлять sh по линейным кодам в консоли I Python, если графический бэкэнд не stati c как inline?

Правильно.

Почему я получаю другой результат, когда я запускаю кодовые блоки против строки за строкой?

Потому что, когда вы запускаете ячейки кода (что, я думаю, вы подразумеваете под "блоками кода"), ваш график отображается в конце этого кода, и, следовательно, он принимает все сделанные вами изменения в промежуточных строках.

Если есть возможность обновить встроенные графики (предпочтительно на панели графиков Spyder), как это сделать?

Нет, это невозможно. Как вы правильно упомянули выше, встроенные графики - это изображения c, поэтому их нельзя изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...