下午好,
我正在开发一个Matlab项目,我已经在数组中存储了一些数据。我想绘制如下图所示的情节。但是,我不知道我需要使用绘图功能和如何,以获得图像图(它将不一样,但是这个样式)。
我的数据是11x16矩阵。
先谢谢你们!
@rayryeng
这是一个非常有用的答案,尽管我并不需要那种确切的形状。我需要我的数据会创建的形状,我一直在尝试修改你编写的代码,以便获得我需要但我没有获得它...
我的数据是
data = ( 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ;
8.00 8.02 8.04 8.07 8.12 8.20 8.30 8.42 8.53 8.63 8.72 8.80 8.86 8.91 8.96 9.00;
6.00 6.03 6.07 6.12 6.22 6.37 6.59 6.83 7.07 7.28 7.45 7.60 7.72 7.83 7.92 8.00;
4.00 4.03 4.07 4.14 4.26 4.48 4.85 5.26 5.63 5.95 6.21 6.43 6.61 6.75 6.88 7.00;
2.00 2.02 2.05 2.10 2.20 2.44 3.08 3.70 4.23 4.67 5.01 5.29 5.52 5.70 5.86 6.00;
0 0 0 0 0 0 1.33 2.24 2.93 3.47 3.88 4.21 4.46 4.67 4.84 5.00;
0 0 0 0 0 0 0 1.01 1.78 2.38 2.84 3.19 3.46 3.67 3.84 4.00;
0 0 0 0 0 0 0 0 0.80 1.43 1.91 2.25 2.51 2.70 2.86 3.00;
0 0 0 0 0 0 0 0 0 0.63 1.10 1.41 1.62 1.77 1.89 2.00;
0 0 0 0 0 0 0 0 0 0 0.44 0.66 0.79 0.88 0.94 1.00;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
这是我的数据矩阵(对不起,我知道它太长了),当我尝试绘图时:
[x,y] = meshgrid(1:16,1:11);
contourf(x,y,data,20,'LineStyle','none');
colorbar
它的形状应该与我得到的形状不同。 我需要得到0(零)的部分就像我之前展示的情节的白色部分。 (虽然形状不同)我真的不知道该怎么做(我的数据应该正确阅读),如果你能帮助我,我会非常感激。
非常感谢您的最后答复。
答案 0 :(得分:2)
这取决于您的数据,我相信您应该使用contourf
。
这是我能得到的,
[x,y] = meshgrid(1:16,1:11);
data = - y;
data(end,5:10) = NaN;
data(end-1,6:9) = NaN;
data(end-2,7:8) = NaN;
contourf(x,y,data,20,'LineStyle','none');
colorbar
用,
data = - y .* abs(log(sin(.10 * x - 5.5)+.5));
data(data < -4) = NaN;
所以我认为代码是正确的,这与数据有关,
data = max(data(:)) - data;
答案 1 :(得分:1)
你所拥有的几乎是正确的。您需要做的就是设置0到NaN
的任何数据。这样,当你把它扔进contourf
时,这些部分就不会被可视化了。就这样:
data = [10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ;
8.00 8.02 8.04 8.07 8.12 8.20 8.30 8.42 8.53 8.63 8.72 8.80 8.86 8.91 8.96 9.00;
6.00 6.03 6.07 6.12 6.22 6.37 6.59 6.83 7.07 7.28 7.45 7.60 7.72 7.83 7.92 8.00;
4.00 4.03 4.07 4.14 4.26 4.48 4.85 5.26 5.63 5.95 6.21 6.43 6.61 6.75 6.88 7.00;
2.00 2.02 2.05 2.10 2.20 2.44 3.08 3.70 4.23 4.67 5.01 5.29 5.52 5.70 5.86 6.00;
0 0 0 0 0 0 1.33 2.24 2.93 3.47 3.88 4.21 4.46 4.67 4.84 5.00;
0 0 0 0 0 0 0 1.01 1.78 2.38 2.84 3.19 3.46 3.67 3.84 4.00;
0 0 0 0 0 0 0 0 0.80 1.43 1.91 2.25 2.51 2.70 2.86 3.00;
0 0 0 0 0 0 0 0 0 0.63 1.10 1.41 1.62 1.77 1.89 2.00;
0 0 0 0 0 0 0 0 0 0 0.44 0.66 0.79 0.88 0.94 1.00;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
data(data == 0) = NaN;
[x,y] = meshgrid(1:16,1:11);
contourf(x,y,data,20,'LineStyle','none');
colorbar
这就是我得到的:
根据您的评论,您希望反转y轴。只需将axis ij;
放在上面代码的末尾即可翻转y
- 轴,以便y
- 向下是正方向。如果你这样做,我们得到这个数字:
当他想出你需要从哪里开始时,应该去Kamtal。我刚刚完成了这项要求。