我有一个由5列组成的矩阵。第一和第二列用于行的x_start & y_start,第三和第四列用于x_end & y_end。第五个是-concentration的污染物在这一行-给出的颜色,我的图形。我想为每一行绘制x_start & y_start和x_end & y_end,并根据颜色图中从Cmin到Cmax的浓度值给这一行一个颜色。有什么帮助吗?
发布于 2015-01-28 10:46:24
我希望我已经正确理解了你的问题。您可以尝试以下代码。假设您的数据采用以下格式:
% 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的一个共格
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
发布于 2015-01-28 11:04:24
我的方法并不是完全自动化的(如果您期望这样的事情),它会:
concentration of contaminant
的范围,即最小值和最大值。举一个例子:
我通常喜欢不同线条风格、点样式和颜色的组合方案。
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的解决方案可能更优雅,但是这个解决方案直接控制了一些参数,这就是我提供它的原因。
我只使用这些颜色,因为其他颜色如青色('c')或黄色('y')显示得不太好。
https://stackoverflow.com/questions/28189766
复制相似问题