Save listener Callback in eps format or any high resolution format

Hello,
for the Cart-Pole example and Training result (Episode Reward Chart) in RL Toolbox I am getting a static figure, that I can't save in anyway other than with the snipping tool which ruins the quality. I also tried to use the saveas command like here, but the eps or png file is coming empty and a figure 2 is opening.
Any help is much appreciated!

6 Comments

Have you tried using an explicit handle to the figure you want to store, instead of using gcf?
@Rik I am not sure, how I could do that. You mean something like this?
env = rlPredefinedEnv("CartPole-Discrete");
plot(env)
fig = gcf;
saveas(gcf, 'png_saved','png')
Figure(2) is opening and I am getting an empty file from that.
For the training there is a command rlPlotTrainingResults(trainingStats) but that still doesn't appear as a figure, so I don't know what exactly I should do. I opened the scripts of these commands, but I don't want to change something there.
You might need to use some tricks to get to the figure handle. The example below shows how you could try. I don't have the required toolboxes, so it is hard for me to experiment.
env = rlPredefinedEnv("CartPole-Discrete");
x=plot(env);
fig = getHiddenProp(x,'Figure');
saveas(fig, 'png_saved','png')
%confirm saving worked:
I=imread('png_saved.png');
figure,imshow(I)
function varargout=getHiddenProp(obj,PropType)
% Retrieve a hidden property from an object
% Use with care, this maight break for any release.
% If there are multiple objects, the first will be selected.
% If there are multiple matches, they will be returned in multiple outputs.
w=warning('off','all');
x=struct(obj);
warning(w);
if numel(x)>1,x=x(1);end
if numel(x)<1,varargout={};return,end
fn=fieldnames(x);
y=cellfun(@(elem) ...
ismember(cellstr(PropType),...
regexprep(class(x.(elem)),'.*\.','')... strip matlab.graphics.axis.Axes to Axes etc
),fn);
varargout=fn(y);
for n=1:numel(varargout)
varargout{n}=x.(varargout{n});
end
end
@Rik I tried that and it worked. But the .eps file isn't really so clear. If I include that in my pdf, it's pixelated for some reason. Of course I changed the format from png to epsc

Sign in to comment.

 Accepted Answer

Hello,
If you are using R2020b, you can use
help rlPlotTrainingResults
to recreate the Episode manager plot and save it as you need.
If you are using R2021a, this function is now renamed to "inspectTrainingResult".
Hope that helps

1 Comment

I am using R2020b. Do you mean like this? I already mentioned this in the comments, it only lets me save it as .pdf or .png. The bigger issue is with the Cart-Pole Visulaizer. It doesn't seem, like I can save that in any way

Sign in to comment.

More Answers (0)

Categories

Find more on Graphics in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!