2016-02-29 36 views
2

沒有令人滿意的第一答案和原因不明的downvote後編輯替代Mayavi的科學3D繪圖

我需要繪製是在3D網格爲下面的一個結構化標量場:

import numpy as np 
from mayavi import mlab 

dt = 10 
X,Y,Z = np.mgrid[0:dt,0:dt,0:dt] 

F = X**2+Y**2+Z**2 

test = mlab.figure(size = (1024,768), bgcolor = (1,1,1), fgcolor = (0, 0, 0)) 
sf = mlab.pipeline.scalar_field(X,Y,Z,F) 
vl = mlab.pipeline.volume(sf) 
mlab.outline() 
mlab.axes() 
mlab.title('Can not change font size for this title') 
mlab.xlabel('Only end ticks') 
mlab.ylabel('No major ticks') 

enter image description here

我想這樣做,在Python,因爲我在這門語言模擬許多數據集,我希望能夠當我在模擬參數中執行靈敏度時快速可視化它們。

Mayavi似乎爲科學3d繪圖提供了非常標準的程序。但是,當在出版物中傳達這些圖時,非常基本的繪圖定製不可用,例如軸中的主要和次要刻度。此外,支持的這些非常基本的功能甚至不能正常工作(例如,請參閱字號爲bughere的示例)。

是否有任何體面和易於使用的科學3D在Python中繪圖庫?我曾嘗試學習vtk,但網站示例似乎已過時(例如,volume rendering未能運行的示例,我嘗試編輯許多代碼行以使其無法運行),而其他人似乎同意文檔缺乏。

通過體面的科學繪圖庫我指的是以下幾點:

  • 允許在軸標籤,標題自定義字體等
  • 可以編輯軸間距蜱(與至少是主刻度) 。
  • 可以添加顏色條
  • 有文檔。

在此先感謝!

回答

1

你應該嘗試matplotlib,如果你還沒有這樣做。使用meshgridcontourcontourf(您可以在Web上輕鬆找到腳本)並不難,可以在結構化網格上繪製數據。甚至有可能在非結構化網格上繪圖(查看結果:https://grantingram.wordpress.com/plotting-2d-unstructured-data-using-free-software/

它具有「體面」科學密謀圖書館的特點。

編輯: 當你說'3D'繪圖時,我假設你想要一個2變量函數的圖,以便它的圖是3D。

但是,如果您的數據取決於3個空間變量,則我認爲您希望顯示切割平面等的能力。然後,我建議您將數據輸出到文件並使用適當的可視化軟件包,例如ParaView(使用VTK)或TecPlot(非自由軟件)。你可以通過腳本自動化可視化管道(我相信ParaView支持Python腳本)。

+1

感謝您的回答。我同意你的看法,matplotlib是一個很好的庫,它在其他地方得到了極大的支持。不過,我正在尋找一個支持「3D繪圖」的圖庫,以便在我的問題中使用這種圖形。爲了更加清晰,我已更新了我的問題。 – pysolver

+1

感謝您將Paraview引薦給我。我認爲使用MayaVi並不容易。這絕對是一種學習曲線,但它可以嵌入到一個Python項目中,爲研究人員使用這個環境非常方便。 – pysolver