【发布时间】:2017-03-02 20:52:22
【问题描述】:
许多示例使用fig, ax = plt.subplots() 定义fig 和ax,然后它们直接调用图形对象上的函数。相反,其他示例直接使用 plt. This answer 解释了一些差异,但我仍然不清楚两件事。首先,如果我不创建单独的图形对象,我如何将它传递给另一个函数。例如,当我创建一个图形对象时,我可以将它传递给mpld3 以创建 D3 可视化:
d3plot = mpld3.fig_to_html(fig,template_type="simple")
其次,如果我确实创建了图形对象,那么如何调用可以在图形上的 plt 上调用的函数?例如,我希望能够运行以下代码,然后将其作为图形传递给 mpld3,如上所述。
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
另一个答案说 plt.subplots() 解包一个元组。我不确定它是否会解开 plt 上已有的内容。所以我尝试了:
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() 创造了全新的数字。
更新 基于 cmets,我尝试了以下方法:
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 -
我不遵循,你建议的顺序我在上面的例子中采用。我也无法将坐标轴传递给 mpld3.fig_to_html,所以我不确定你在做什么区分或它如何解决当前的情况。
-
对不起,我误解了你问题的一部分。您正在寻找的是
fig=plt.gcf()。详情见我的回答。 -
请参阅 Andreas Mueller 的 matplotlib 解释视频,它可能会有所帮助。 youtube.com/…
标签: python matplotlib word-cloud mpld3