相关疑难解决方法(0)

我如何获得具有功能bar3和每个条形宽度不同的条形图?

我有代码:

values = [1.0 0.6 0.1;  0.0 1.0 0.3;  0.9 0.4 1.0];
h = bar3(values);
shading interp
for i = 1:length(h)
    % Get the ZData matrix of the current group
    zdata = get(h(i),'Zdata');
    set(h(i),'Cdata',zdata)
end
set(h,'EdgeColor','k')
view(-61, 68);
colormap cool
colorbar
Run Code Online (Sandbox Code Playgroud)

这就是图中的样子:

在此输入图像描述

我想根据条的高度为每个条获得不同的宽度.

我想要的看起来像http://www.sdtools.com/help/ii_mac.html中的图片.

blah http://www.sdtools.com/help/mac.gif

graphics matlab graph width matlab-figure

11
推荐指数
1
解决办法
1218
查看次数

如何在MATLAB中的bar3图中隐藏零值

我用bar3 plot命令生成了二维直方图(绘图是3D - 几个直方图并排绘制的直方图).但是,所有零值在xy平面中显示为平面正方形.有没有办法阻止MATLAB显示值?我已经尝试用NaN替换所有零,但它没有改变关于该情节的任何内容.这是我一直在试验的代码:

x1=normrnd(50,15,100,1); %generate random data to test code
x2=normrnd(40,13,100,1);
x3=normrnd(65,12,100,1);

low=min([x1;x2;x3]);
high=max([x1;x2;x3]);
y=linspace(low,high,(high-low)/4); %establish consistent bins for histogram
z1=hist(x1,y);
z2=hist(x2,y);
z3=hist(x3,y);
z=[z1;z2;z3]';
bar3(z)
Run Code Online (Sandbox Code Playgroud)

如您所见,图中有相当多的零值.用NaN替换零后关闭数字并重新绘图似乎没有任何改变:

close
z(z==0)=NaN;
bar3(z)
Run Code Online (Sandbox Code Playgroud)

matlab plot data-visualization histogram

10
推荐指数
2
解决办法
1万
查看次数

如果网格大于120个三角形,则Matlab会正确停止在网格上插入颜色

我正在尝试使用trimesh函数在Matlab中绘制一个大网格,顶点的z坐标控制颜色.不幸的是,当网格的大小超过120个三角形时,Matlab会停止正确插值颜色.这是一张展示问题的图片,左边是120个三角形,右边是121个三角形.

一张图片展示了这个问题

如您所见,对于大网格,Matlab直接从一个顶点的颜色插值到另一个顶点的颜色.这可能是出于性能原因而做的,但我正在尝试为我的论文生成漂亮的图片,而我并不关心计算它们需要多长时间.有没有办法禁用这种近似值?

这是生成图片的代码:

function test(n)
    %%% Generate a mesh with n triangles.

    oneTriVerts = [0 0 0;
                   1 0 0;
                   1 0 1];

    offset = [0 (1/n) 0;
              0 (1/n) 0;
              0 (1/n) 0];

    verts = zeros(0,3);
    tris  = zeros(0,3);
    for i = 0:(n-1)
        verts = [verts; (oneTriVerts + i * offset)];
        tris = [tris; i*3+1, i*3+2, i*3+3];
    end

    %%% Draw the mesh, with color corresponding to the z coordinate.

    trimesh(tris, verts(:,1), verts(:,2), verts(:,3), verts(:,3));
    title(sprintf('n = %d', …
Run Code Online (Sandbox Code Playgroud)

3d matlab plot mesh

8
推荐指数
1
解决办法
1223
查看次数