假设我有这样的信息,第一列是电机的一个特征,第二列是特征二,第三列是响应(在这种情况下是电机的性能)。
[34 56 100
12 12 80
7 6 60
3 4 20
1 1 10.5
0 0 1]
我希望有类似heatmap
或contour
的东西,例如我对矩阵中的第一行有一个更温暖的(例如红色),对于第二行等有更多的浅色。我该怎么办?办?
感谢。
答案 0 :(得分:1)
您可以使用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);
欢迎效率反馈。