How to correctly graph a 2D matrix using surface and colour map
古いコメントを表示
Hello,
I'm using the following code to display a 2D of amino acid concentrations matrix. I wanted the color to reflect how high or low is the number with respect to 0. *********************************
AA_change_fluxes_all =[376.121264363720,41.4792270359525,-4.22520493097745,41.4792270359525,17.4245933564618,41.4792270359525,-51.6998081291888,-57.7544994220980,41.4792270359525,38.6073058842969,-67.2343859737658,41.4792270359525,-100,-100,18.4877035538063,41.4792270359525,-5.40268491509431,36.0377183037992,41.4792270359525,-29.4263181933951;11.9817703299583,864.514962931298,-100,-100,295.060908554746,-100,-100,-100,-100,-100,248.339884632656,-100,-100,-100,-100,-100,-100,-100,-1.19047530094366,-100;-100,-100,2738.49142749238,-100,1268.64583333333,-100,-100,-2.18607278321318,-100,-5.62455508026194,2637.29166666667,-2.33704111793202,-10.8999271409847,-48.6883462257016,7.21170768652618,-100,1066.57137938776,-100,-93.1205572569425,-57.6509700643325;204.571307354865,1693.72013651877,-26.8143500871377,5420.48284379477,1693.72013651877,-100,814.005040147515,352.783514391774,1693.72013651877,930.601178508655,-80.1992956520749,586.173368382117,464.130247777452,83.0206666119299,356.863714792095,-100.000000000000,79.5041644086269,589.892360199511,-95.9839369804205,-75.2775945099139;-100,60.6182185307926,60.6182185307926,60.6182185307926,544.089836054689,60.6182185307926,60.6182185307926,60.6182185307926,-36.7714848837221,-68.2822101748315,38.8424972972340,-58.5463870180832,60.6182185307926,19.3955379255350,-7.30225353741437,-100,60.6182185307926,17.3748520032706,-50.0801521492391,15.6736372744044;Inf,Inf,NaN,Inf,Inf,Inf,NaN,NaN,Inf,Inf,NaN,NaN,NaN,Inf,NaN,Inf,Inf,Inf,Inf,NaN;0,0,0,0,0,0,-312.320444538756,0,0,0,0,0,0,0,0,-99.9999999999999,0,0,0,0;-182.067481795216,-204.562003859698,-56.9687123051353,-204.562003859698,4.56200385969797,-78.9354664860151,-140.285112428740,10.5285957451209,-202.153356461084,-200.644010602912,-203.423615031077,-120.918628655759,-77.7936319280589,-183.939598527674,-64.3243713073015,-172.389079595175,-98.7076121645494,-100,-99.5803580490538,-106.535354669990;-100,-100,3.26888423321124,-100,-100,-100,-99.6547760685308,29.2511256849540,1847.22533215140,-5.62455508026195,-83.5056680043352,-2.33704111793202,17.7366561524045,-48.6883462257016,19.6491142616530,-100,-72.0036855609929,-100,-90.9095182667119,-44.0400774552332;-100,-100,-1.04497581579855,-100,-100,-100,-99.6547760685308,-36.2914485437806,-74.2815597779735,2427.52359306789,-83.5056680043352,-2.33704111793202,-41.9669904070952,-48.6883462257016,-6.28130204082505,-100,-86.2004711404257,-100,-95.5192543183055,-72.4170634024556;-100,353.296477458712,448.122496061392,-100,455.041291827312,181.586874471656,-99.6547760685308,-29.9177093532760,-71.7085514986309,-5.62455508026195,1314.26028944247,131.065159894042,-36.1610623310282,-48.6883462257016,-3.75967830910497,61.2806873977083,-84.8198935587300,-100,-95.0709769096797,-69.6575210810172;1766.15872098268,22.4675390922079,16.7694586067694,-100,-78.9487832232559,-100,706.275319399411,-62.3890821649866,800.027735741498,-5.62455508026195,-92.5775506019559,2088.75049203857,-65.7396894823889,1067.76622039608,-16.6062322449051,382.558661497653,-91.8533237024544,-100,-97.3547513823225,98.6429428277203;519.386012368692,-100,6.05895029091561,-100,-100,-100,-99.6547760685308,71.6419565446931,-30.7100334557142,-5.62455508026194,-83.5056680043352,-2.33704111793200,2098.68266244197,-48.6883462257016,36.4200742755955,-100,-62.8216608490938,-100,-87.9280891182444,-25.6867548133752;-100,-100,-47.8004463543684,-100,-100,-100,-99.8182801837543,-44.2644598109879,-85.7792056306135,-50.3224227939915,-91.3176732372172,-48.5919331648473,-67.9111373422045,655.024175915429,130.030893823160,-100,-92.3696670322040,-100,-97.5224095080883,-84.7482481024817;5336.82758620690,-100,1.93852809542029,-100,1694.03147419579,-100,-99.6547760685308,9.03837772345469,-55.9824084006285,-5.62455508026195,-83.5056680043352,-2.33704111793202,-0.675418357792898,3097.85184983857,5448.47999030838,-100,-76.3818481851688,-100,-92.3311199367154,-52.7912879715689;-100,-100,-1.40793505304670,-100,-100,2735.52541300698,-99.6547760685308,-41.8060647990764,-76.5077495949984,-5.62455508026194,-83.5056680043352,-2.33704111793201,-46.9903313986840,-48.6883462257016,-8.46303348684969,4953.46153846154,-87.3949592338605,-100,-95.9071079487416,-74.8046441440165;-100,-100,-43.9736625079918,-100,-100,-100,-99.8114612444096,-35.0692279271179,-73.7881627826052,-48.4582981610408,-90.9918735485023,-2.33704111793201,-40.8536525717471,-71.9769272404704,-36.8938294778408,-100,898.051769398744,-100,-95.4332931776892,-71.8878968619044;NaN,NaN,Inf,NaN,NaN,NaN,Inf,Inf,Inf,Inf,Inf,NaN,Inf,Inf,Inf,NaN,NaN,Inf,Inf,Inf;1431.13826620254,-100,-72.9140787051765,-100,-100,-100,930.859980604377,-25.2801878865107,-69.8364351830790,-77.9223624867126,-96.1414128099337,-77.1533007711158,-31.9366792361930,-87.9964529629535,-54.4110873318076,-100,-83.8153877293752,-100,1901.74188293378,-67.6496829232867;-100,-100,1.37472789035786,-100,-100.000000000001,-100,-99.6547760685308,0.472286943814896,-59.4404448591095,-5.62455508026194,-83.5056680043352,-2.33704111793203,-8.47839012572184,-48.6883462257016,8.26342674417282,-100,-78.2372979517297,-100,-92.9335896741768,5456.36711296770];
figure(1); xlabels = {'ALA', 'ASP', 'ASN', 'GLN', 'GLU',...
'SER', 'GLY', 'PRO', 'VAL', 'ISL', 'LEU', 'ARG',...
'THE', 'LYS', 'CYS', 'MET', 'PHE', 'TYR', 'TRY',...
'HIS'}; ylabels = {'ALA', 'ASP', 'ASN', 'GLN', 'GLU',...
'SER', 'GLY', 'PRO', 'VAL', 'ISL', 'LEU', 'ARG',...
'THE', 'LYS', 'CYS', 'MET', 'PHE', 'TYR', 'TRY',...
'HIS'}; flat_color_map = surface(AA_change_fluxes_all);
axis([0 20 0 20]); grid on;
colorbar
for k = 1:length(flat_color_map)
zdata = flat_color_map(k).ZData;
flat_color_map(k).CData = zdata;
flat_color_map(k).FaceColor = 'interp';
end
et(gca, 'YTick', 1:20, 'YtickLabel', ylabels)
set(gca, 'XTick', 1:20, 'XtickLabel', xlabels)
************************************************
The problem I'm facing is that there are only 19 colored columns in the figure NOT 20 as I'd expect. The HIS is always missing. Using bar3 seems to solve this problem but I'd really like to use surface/surf as a 2D representation. suggestions?
Thanks Al
回答 (2 件)
Walter Roberson
2016 年 7 月 21 日
0 投票
surface() calculates the face colors as a weighted version of the vertex colours, so there is always one fewer output face than vertex rows (or columns)
patch() is more flexible about what is used for the coloring.
Also you should consider trying the texturemap options in surface
カテゴリ
ヘルプ センター および File Exchange で Surface and Mesh Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!