8

Matlab でさまざまなグラフを生成する統計コードに取り組んでいます。グラフの種類は、単純な円グラフや棒グラフから 3D ヒストグラム格子までさまざまです。

ここで、ソフトウェアに合わせて優れた GUI を使用したいと考えています。プロトタイプの Matlab GUI がありますが、Matlab の GUI には多くの問題があるため、より堅牢な GUI に移行したいと考えています。私の最良の選択肢は PySide + matplotlib のようですが、これまでのところ、3D ラティスをプロットする方法は見つかりませんでした。matlab コードでは、contourslice を使用しています。matplotlib には同様の呼び出しがないようです。では、matplotlib を使用してこのようなグラフを取得する方法を理解してくれる人はいますか? これまでのところ、私の唯一のアイデアは、立方体を作成するために 6 つの面をグラフ化することです。

実際、他の GUI/Graph ライブラリの組み合わせの推奨事項も歓迎します。bases stat コードは C++ であるため、Python は多くのオプションの 1 つにすぎません。StackOverflow で見たいくつかの回答から判断すると、matplotlib は 3D で許容できないほど遅い可能性があります。Rのほうがいいかも?

Contourslice で作成された色付きの 3D 立方体

ここにmatlabコードがあります:

clf
xlo = -1.800000e+01; 
xhi = 1.000000e+01; 
ylo = 1.000000e+01; 
yhi = 3.000000e+01; 
zlo = -1.000000e+03; 
zhi = 1.000000e+03; 
X=zeros(16,16,16);
Y=zeros(16,16,16);
Z=zeros(16,16,16);
V=zeros(16,16,16);
% fill in X, Y, Z, and V  huge amount of text
xt = [-1.800000e+01:2.800000e-01:1.000000e+01];
yt = [1.000000e+01:2.000000e-01:3.000000e+01];
zt = [-1.000000e+03:2.000000e+01:1.000000e+03];
isoval = -1.428280e+01;
h = patch(isosurface(X,Y,Z,V,isoval),... 
'FaceColor', 'blue', ... 
'EdgeColor', 'none', ... 
'AmbientStrength', 0.2, ... 
'SpecularStrength', 0.7, ... 
'DiffuseStrength', 0.4);
isonormals(X,Y,Z,V,h);
patch(isocaps(X,Y,Z,V,isoval), ...
'FaceColor', 'interp', ... 
'EdgeColor', 'none'); 
axis([xlo xhi ylo yhi zlo zhi])
daspect([2.800000e+01,2.000000e+01,2.000000e+03])
set(gca,'linewidth',2)
set(gca,'fontweight','bold')
set(gca,'fontsize',12)
grid on
box on
colormap('default'); colorbar

view(3) 
set(gcf,'Renderer','zbuffer')
lighting phong
cin = 'n';
if (cin == 'y')
xin = questdlg('Axis to slide through ?', 'Axis', 'X', 'Y', 'Z', 'X');
xin = lower(xin);
for i = 1 : 101
if gcf ~= plotFigure
return
end
if (xin == 'y')
h = contourslice(X,Y,Z,V,xt(i),[],[],101);
elseif (xin == 'x')
h = contourslice(X,Y,Z,V,[],yt(i),[],101);
elseif (xin == 'z')
h = contourslice(X,Y,Z,V,[],[],zt(i),101);
end
axis([-1.8000e+01  1.0000e+01  1.0000e+01  3.0000e+01 -1.0000e+03  1.0000e+03 -8.6774e+01  4.2066e+02])
set(gca,'linewidth',2)
set(gca,'fontweight','bold')
set(gca,'fontsize',12)
grid on
box on
view(3)
set(h, 'Linewidth', 10)
colorbar
pause(0.3)
if (i < 101)
clf
end
end
end
4

1 に答える 1

2

mayavi Windows を使用している場合は、デフォルトでPython(x,y)が付属しています。

于 2012-12-04T14:46:34.757 に答える