How to correctly graph a 2D matrix using surface and colour map
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Al-Hussein Abutaleb
el 21 de Jul. de 2016
Respondida: Al-Hussein Abutaleb
el 21 de Jul. de 2016
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
0 comentarios
Respuestas (2)
Walter Roberson
el 21 de Jul. de 2016
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
0 comentarios
Ver también
Categorías
Más información sobre Annotations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!