gpt4 book ai didi

matlab - 在 3D log loglog plot 中使拟合表面透明... FaceAlpha 的透明度不起作用

转载 作者:行者123 更新时间:2023-12-04 04:55:58 25 4
gpt4 key购买 nike

我有一个 log log log 3D 图,其中我将一些数据与表面拟合。我正在疯狂地为表面提供一些透明度,以便在下面看到我的数据......这是一个最小的例子,我生成一些随机日期并进行幂律拟合,在对数刻度中变成一个平面。有什么建议吗?我基本上想要一个透明的灰色表面。我阅读了手册,使用 FaceAlpha 但不起作用。谢谢。 A.

%generate a vector of X and Y variables
[Log10X,Log10Y] = meshgrid(1.1:0.1:2);
Log10X = reshape(Log10X,100,1);
Log10Y = reshape(Log10Y,100,1);
%Specity Z as a function of X and Y (i.e. it lays on a plane)
A=0.3; B=0.4;
Log10Z =A*Log10X + B*Log10Y;
%%Add in a noise vector
noise =0.02*randn(100,1);
Log10Z= Log10Z + noise;
%compute "original" X,Y,Z
X = 10.^Log10X;
Y = 10.^Log10Y;
Z = 10.^Log10Z;
figure
scatter3(X,Y,Z, 'filled')
hold on
f = fittype( @(a, b, c, x, y) a*x.^b.*y.^c, 'independent', {'x', 'y'}, 'dependent', 'z');
[sf,gof] = fit( [X, Y],Z,f,'startpoint', [0.9 0.3 0.4] ) %, 'Robust', 'LAR'
XLIM = [min(X) max(X) ]
YLIM = [min(Y) max(Y) ]
HANDLEsur = plot(sf,'XLim',XLIM,'YLim',YLIM )
set(gca,'xscale','log','yscale','log','zscale','log')
xlim(XLIM)
ylim(YLIM)
set(HANDLEsur,'EdgeColor','none','FaceColor',[0.5 0.5 0.5],'FaceAlpha',0.3)

编辑:
尝试执行建议的解决方法,但对于 3D 绘图执行此操作看起来很复杂,对于 2D 绘图,您可以执行此操作,但它不适用于 3D:
%replace linear XTickLabel with log XTickLabel
set(gca, 'XTickLabel',[]) %# suppress current x-labels
xt = get(gca, 'XTick');
yl = get(gca, 'YLim');
str = cellstr( num2str(xt(:),'10^{%d}') ); %# format x-ticks as 10^{xx}


hTxt = text(xt, yl(ones(size(xt))), str, ... %# create text at same locations
'Interpreter','tex', ... %# specify tex interpreter
'VerticalAlignment','top', ... %# v-align to be underneath
'HorizontalAlignment','center'); %# h-aligh to be centered

最佳答案

对数轴不能具有透明度:不幸的是,MATLAB 中唯一支持透明度的渲染器是 OpenGL,但它不支持对数轴!

更多信息在Renderer .

解决方法是记录转换数据,在线性轴上绘图并手动设置刻度标签。

关于matlab - 在 3D log loglog plot 中使拟合表面透明... FaceAlpha 的透明度不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16753893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com