Rick,
I feel a bit frustration , 'col1=1' would eliminate the variables which don't have missing value.
Why proc sgplot would have this kind of problem?
I have to add one more data step to set 0 be missing to workaround it.
Here is my corrected code2.

%let dsn=sashelp.heart;

proc transpose data=&dsn(obs=0) out=temp;
var _all_;
run;

proc sql noprint;
select catx(' ','missing(',_name_,') as ',_name_)
into :names separated by ','
from temp;
select _name_ into :vars separated by ' '
from temp;
create table want as
select &names. from &dsn;
quit;

data want;
set want;
_obs+1;
run;

proc transpose data=want out=want2;
by _obs;
var &vars.;
run;

data want3;
set want2;
if col1=0 then col1=.;
run;

proc sgplot data=want3 ;
styleattrs DATACOLORS=(black);
heatmapparm x=_name_ y=_obs colorgroup=col1/x2axis nomissingcolor ;
yaxis reverse integer ;
x2axis type=discrete tickstyle=inbetween display=(nolabel) colorbands=odd colorbandsattrs=(transparency=0.8);
run;