Matlab Plot (axes) reset not working; traces new images on the old axis
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Shreedhar Savant Todkar
el 28 de Ag. de 2020
Editada: Shreedhar Savant Todkar
el 28 de Ag. de 2020
I'm relatively new to Matlab guide UI tool.
Here is what I'm doing:
I created a multi-tab window wherein the number of tabs depend on the number of files chosen beforehand using a 'Browse' button (e.g, 5 files chosen leads to 5 tabs, etc.). Once the files are chosen, they are plotted using imagesc() on specific tabs. I then perform a zoom on specific zones of said images using a zoom button and subsequently save these files for further processing.
Code to dynamically create tabs:
function browsebutton_Callback(hObject, eventdata, handles)
global tabgp tab fullFilename ax two_D_data time_axis;
[file_names, folder] = uigetfile( ...
{'*.ASC; *.BIN', 'All data files (*.DZT, *.ASC, *.BIN)';
'*.ASC','ASCII files (*.ASC)'; ...
'*.BIN','Binary files (*.BIN)'; }, 'Pick a file', 'Multiselect', 'On');
fullFilename = fullfile(folder, file_names);
numfiles = size(file_names,2);
for k = 1 : numfiles
[image_file, time_axis, dist] = import_images(char(fullFilename(k)));
tab(k) = uitab('Parent', tabgp, 'Title',char(file_names(k)));
ax(k) = axes('Parent', tab(k));
imagesc(ax(k), 'CData', image_file, 'YData', time_axis, 'XData', dist);
xlabel(ax(k), 'Distance axis');
ylabel(ax(k), 'Time axis');
xlim([0.5 size(image_file,2)+0.5]);
ylim([min(time_axis) max(time_axis)]);
end
end
Code to update images on an active tab:
function zoombutton_Callback(hObject, eventdata, handles)
global ax tabgp tab time_axis fullFilename;
tabNumber = find(tabgp.SelectedTab == tab);
set(handles.text6, 'String', ['Calibrating data from Panel: ' num2str(tabNumber)]);
[image_file, time_axis, dist] = import_images(char(fullFilename(tabNumber)));
[max_val, min_val, idx1, idx2] = get_minmax_vals();
new_data = image_file(idx1:idx2,:);
ax(tabNumber) = axes('Parent', tab(tabNumber));
cla(ax(tabNumber), 'reset'); % Reset isn't working
imagesc(ax(tabNumber), 'CData', new_data, 'YData', time_axis(idx1:idx2));
set(ax(tabNumber), 'YDir', 'reverse');
xlabel(ax(tabNumber), 'Distance axis');
ylabel(ax(tabNumber), 'Time (s)');
xlim([0.5 size(new_data,2)+0.5]);
ylim([min(time_axis(idx1:idx2)) max(time_axis(idx1:idx2))]);
hold(ax(tabNumber), 'off');
Issue faced:
When I perform the Zoom, the images are zoomed. However, the ticks from the previous figure are not erased.
The new image, its axis labels and ticks overlap on the old image axis labels and ticks.
Am I doing something wrong here?
PS: I'm using Matlab R2016a
0 comentarios
Respuestas (0)
Ver también
Categorías
Más información sobre Data Exploration 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!