假设我有这样的信息,第一列是电机的特征之一,第二列是特征二,第三列是响应(在这种情况下是电机的性能)。
[34 56 100
12 12 80
7 6 60
3 4 20
1 1 10.5
0 0 1]
heatmap
我想要类似的东西contour
,例如我有一个温暖的(例如红色)矩阵中的第一行和第二行更多的浅色等等。我该怎么办?
谢谢。
您可以结合使用image()
、标准颜色图和对数据的巧妙操作来做到这一点。试试这个:
yourData = [34 56 100;
12 12 80;
7 6 60;
3 4 20;
1 1 10.5;
0 0 1];
%// First, normalize each column relative to itself.
normData(:, 1) = yourData(:, 1)/max(max(yourData(:, 1));
normData(:, 2) = yourData(:, 2)/max(max(yourData(:, 2));
normData(:, 3) = yourData(:, 3)/max(max(yourData(:, 3));
%// Next, adjust each column to a particular location on the default colormap
%// Adjust the scale and constant offsets to preference. Lower offsets are cooler.
scale = 5;
scaledData(:, 1) = (scale*normData(:, 1)) + 58;
scaledData(:, 2) = (scale*normData(:, 2)) + 46;
scaledData(:, 3) = (scale*normData(:, 3)) + 20;
image(scaledData);
有趣的问题。享受!
更新:
我认为这是一个巧妙的问题,所以我把它变成了一个函数。看看这个:
function scaledData = colorcolumn(C, scale)
for colNum = 1:size(C, 2)
normData(:, colNum) = C(:, colNum)/max(max(C(:, colNum)));
scaledData(:, colNum) = (scale*normData(:, colNum)) + colNum*(64/size(c,2));
end
end
试试这个以获得整洁的效果:
image(colorcolumn(rand(50,25), 5);
欢迎效率反馈。