从数组的数据绘制这种图形

时间:2014-11-21 16:54:27

标签: arrays matlab matrix plot

下午好,

我正在开发一个Matlab项目,我已经在数组中存储了一些数据。我想绘制如下图所示的情节。但是,我不知道我需要使用绘图功能如何,以获得图像图(它将不一样,但是这个样式)。

我的数据是11x16矩阵。

先谢谢你们!

enter image description here


@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(零)的部分就像我之前展示的情节的白色部分。 (虽然形状不同)我真的不知道该怎么做(我的数据应该正确阅读),如果你能帮助我,我会非常感激。

非常感谢您的最后答复。

2 个答案:

答案 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

enter image description here

用,

data = - y .* abs(log(sin(.10 * x - 5.5)+.5));
data(data < -4) = NaN;

enter image description here

所以我认为代码是正确的,这与数据有关,

data = max(data(:)) - data;

enter image description here

答案 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

这就是我得到的:

enter image description here

根据您的评论,您希望反转y轴。只需将axis ij;放在上面代码的末尾即可翻转y - 轴,以便y - 向下是正方向。如果你这样做,我们得到这个数字:

enter image description here


当他想出你需要从哪里开始时,应该去Kamtal。我刚刚完成了这项要求。