Многие примеры определяют fig
и ax
с помощью fig, ax = plt.subplots()
, а затем они напрямую вызывают функции на объекте-фигуре. Напротив, другие примеры работают напрямую с plt. Этот ответ объясняет некоторые различия, но мне все еще неясны две вещи. Во-первых, если я не создаю отдельный объект-фигуру, как передать его другой функции. Например, когда я создаю объект-фигуру, я могу передать его mpld3
для создания визуализации D3:
d3plot = mpld3.fig_to_html(fig,template_type="simple")
Во-вторых, если я действительно создаю объект-фигуру, как мне вызвать функции, которые я могу вызвать на plt на фигуре? Например, я хотел бы запустить следующий код, а затем передать его в виде рисунка в mpld3, как указано выше.
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
Другой ответ гласит, что plt.subplots () распаковывает кортеж. Я не был уверен, распакует ли он то, что уже было на плате. Итак, я попробовал:
wordcloud = WordCloud().generate(text)
plt.imshow(wordcloud)
plt.axis("off")
fig, ax = plt.subplots()
d3plot = mpld3.fig_to_html(fig,template_type="simple")
Однако это дает мне только черный график, который согласуется с моим предыдущим пониманием того, что plt.subplots()
создает совершенно новые фигуры.
Обновление На основе комментариев я попробовал следующее:
wordcloud = WordCloud().generate(text)
figTopicWordCloud, ax = plt.subplots()
ax.imshow(wordcloud)
ax.axis('off')
d3plot = mpld3.fig_to_html(figTopicWordCloud, template_type="simple")
Хотя это успешно произвело сюжет, оно не удалило оси с фигуры.
ax=plt.gca()
или - для конкретного объекта фигуры - вызвавax=fig.gca()
. Если ваш макет включает подзаголовки, вы можете получить объекты осей подзаголовка, например, вызвавax=fig.add_subplot(111)
. Методы объектов осей вызываются иначе, чем функции plt, см. Этот документ: matplotlib.org/ api / axes_api.html - person Sven Festersen   schedule 03.03.2017fig=plt.gcf()
. Подробности смотрите в моем ответе. - person Sven Festersen   schedule 03.03.2017