The documentation seems to shed some light on the issue:
Create a surface plot and make the figure invisible. Then, save the
figure as a MATLAB figure file. Close the invisible figure.
surf(peaks)
set(gcf,'Visible','off')
savefig('MySavedPlot.fig')
close(gcf)
Open the saved figure and make it visible on the screen.
openfig('MySavedPlot.fig','visible')
...however, sadly it probably will not work when you use the double-clicking interface. The issue has been discussed also here, and would require changing the default behaviour of openfig
. It is possible by editing the built-in function, but kind of dirty.
Another workaround solution is suggested in the comments further down by Jesse Hopkins:
Set the ResizeFcn on the figure to renable visibility. According to Matlab documentation, and in practice, ResizeFcn is called when figure is created:
set(h,'ResizeFcn','set(gcf,''visible'',''on'')');
The nice thing is, this workaround should work for setting on-load any property you might want to set on the figure handle being loaded.