根据matlab中的值绘制几行颜色

时间:2015-01-28 10:23:37

标签: matlab plot line colormap

我有一个由5列组成的矩阵。第一列和第二列用于x_start&该行的y_start,第三个和第四个用于x_end& y_end。第五个是 - 该行中污染物的浓度 - 给出了我的图表颜色的值。我想绘制x_start& y_start与x_end& y_end为每一行,并根据浓度值给这条线一个颜色,浓度值在色图中从Cmin到Cmax的颜色范围内。有什么帮助吗?

2 个答案:

答案 0 :(得分:3)

我希望我能正确理解你的问题。您可以尝试以下代码。假设您的数据采用以下格式:

%    x_start y_start x_end y_end concentration
A = [0         0      1      1     0.3
     0         1      3      3     0.6
     3         1      6      2     1.2];

并使用其中一个matlab colormaps

cmap = colormap;

根据最小和最大浓度(色彩图的第一个和最后一个值),您可以通过

计算颜色指数
con_min = 0;
con_max = 2;
ind_c = round((size(cmap,1)-1)*A(:,5)/(con_max-con_min))+1

并使用

覆盖图表的ColorOrder
figure;
set(gca,'ColorOrder',cmap(ind_c,:),'NextPlot','replacechildren');

并使用

进行绘图
plot([A(:,1) A(:,3)]',[A(:,2) A(:,4)]');

编辑:要显示正确的颜色栏,只需添加

colorbar                  % Display the colorbar
caxis([con_min con_max])  % Scale it to the correct min and max

答案 1 :(得分:0)

我的方法并非完全自动化(如果你期望这样的话)会:

  1. 确定concentration of contaminant的范围,表示最小值和最大值。
  2. 确定您想要多少个不同的地块,并将您的浓度值分成垃圾箱。
  3. 通过提供每个样本所属的bin的索引来绘制每一行。
  4. 举个例子:

    我通常更喜欢具有不同线条样式,点样式和颜色的组合方案

    lines = '-:';
    points = '<>^vdho';
    color = 'rgbkm';
    

    因此,如果样本落入第一个bin(想象i = 1),我会做类似的事情:

    i = lines(mod(i,length(lines))+1);
    p = points(mod(i,length(points))+1);
    c = color(mod(i,length(color))+1);
    plot(..., sprintf('%s%s%s', l, p, c));
    

    由于你有一个随机组合的线条,点和颜色,你得到的不同线条是2 * 7 * 5 = 70.当然你可以改变组合。

    我想也许@ Nemesis的解决方案可能更优雅,但是这个可以直接控制某些参数,这就是我提供它的原因。

    P.S。我只使用这些颜色,因为其他颜色如青色(&#39; c&#39;)或黄色(&#39; y&#39;)显示效果不佳。