簡體   English   中英

在IPython筆記本中“重繪” matplotlib內聯圖

[英]“Replot” a matplotlib inline plot in a IPython notebook

如果我在ipython筆記本中的matplotlib 內聯圖上工作,如下所示:

figure = plt.figure()
ax = figure.gca(projection="3d")
graph = np.empty([len(thetaYield),3])
for g, tY in zip(graph, thetaYield):
    sample =  HWtoPS(xiYield, rhoYield, tY)
    g[...] = sample[:]
ax.plot(graph[:,0],graph[:,1], graph[:,2])
plt.show()

該圖按預期在我的筆記本中內聯繪制。

現在,我想添加一些數據以添加到該繪圖中:

principalStress, vectors = eig(sigma)
ax.scatter(principalStress[0], principalStress[1], principalStress[2])
plt.show()

沒有錯誤,也沒有繪制曲線

希望獲得帶有其他數據的情節的“更新”版本。

如何才能做到這一點?

答:這可以通過更改matplotlib Renderer來實現

當前,對於IPython “內聯”圖無法做到這一點,但是,如果您選擇將matplotlib框架的Renderer部分更改為另一個,則對.show()方法的單例調用的限制不會受到影響,並且您可以事后修改對象的內容,然后由Renderer對其進行重新處理。

只是:

添加指令(IPython magic%matplotlib qt

根據您的期望使用其他matplotlib調用來修改/更新figure對象

(我喜歡在原型開發階段和用於復雜數據可視化的交互式3D查看(我在筆記本的“ 嵌入式 ”中很想念)中都使用此功能) matplotlib的3D視圖 順便說一句 :您是否有任何方法可以將matplotlib 3D視圖圖存儲為一個完整的,狀態已滿的容器,可以將其發送給其他用戶以供其“加載”和UI交互查看? 聽到任何這樣的工作將是很棒的:o)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM