How to add a colormap to a subplot when using handles?

9 visualizaciones (últimos 30 días)
Joseph Leng
Joseph Leng el 23 de En. de 2020
Comentada: Joseph Leng el 28 de En. de 2020
Hi everyone,
I'm currently trying to make a figure that is made up of several surface subplots (of 200x200 data) with a colormap applied to each one. I make each subplot in a loop and apply the settings of them in the loop, when I try to add a colormap (jet, for example) it doesn't apply the colormap to the subplots.
I think this is because I have decided to use handles for the subplots rather than how I was previously starting to writing it (see code below) because there are a lot of subplots and it seemed like a tedious way of doing it. I'm not that familiar with using handles but I have a feeling it is related to that but I can't find a 'colormap' setting in the handle settings in my array so any help/tips would be great
The current method I'm using (I've posted all the code for clarity):
clc; clear all; close all
%Read in averaged experimental images and their fits
N_state = [3 5 6 7 8 9 10 11]; %List of states probed in experiment
num_states = length(N_state); %Number of states probed
filenames = cell(4, 8); %Create a cell array to store the filenames
%String components of the experimental and fitted files
s1 = 'N'; s2 = '_amoeba_';
s_exph = 'mask_h'; s_fith = 'imout_h';
s_expv = 'mask_v'; s_fitv = 'imout_v';
filetype = '.txt';
%For loop for creating the filenames of each file, ordered so each matrix
%element is where the images will be in the diagram
for n = 1:num_states
filenames(1, n) = cellstr(strcat('N', num2str(N_state(1, n)), s2, s_exph, filetype));
filenames(2, n) = cellstr(strcat('N', num2str(N_state(1, n)), s2, s_fith, filetype));
filenames(3, n) = cellstr(strcat('N', num2str(N_state(1, n)), s2, s_expv, filetype));
filenames(4, n) = cellstr(strcat('N', num2str(N_state(1, n)), s2, s_fitv, filetype));
end
images = cell(4,num_states); %Cell array to store the images
%For loop for reading in the images for the figures
for n = 1:num_states
for m = 1:4
images{m,n} = dlmread(char(filenames(m,n)));
end
end
%Dimensions of the figure and properties that might want altering
r = 4; c = 8;
tot = r*c;
pos = 0;
view_az = 0; view_el = 20;
%For loops to plot each subplot with the following settings
figure(1)
for k1 = 1:r
for k2 = 1:c
pos = pos + 1;
subplot(r,c,pos)
s{pos} = surf(images{k1, k2});
view(view_az, view_el)
axis square
zlim([0 inf])
colormap jet %Doesn't change the colormap of the subplots
end
end
The old way is shown here but it did let me apply a colormap:
subplot(r,c,1)
s11 = surf(exp_H); %s11 refers to the 1st row, first column i.e. s[r,c]
colormap jet
shading interp
axis square
view(view_az, view_el)
zlim([0 inf])
set(gca, 'visible', 'off')
subplot(r,c,9)
s12 = surf(fit_H);
colormap jet
shading interp
axis square
view(view_az, view_el)
zlim([0 inf])
%set(gca, 'visible', 'off')
Thanks in advance!
  1 comentario
Mohammad Sami
Mohammad Sami el 25 de En. de 2020
colormap can be called as a function.
pass in the axes handle as the first argument.

Iniciar sesión para comentar.

Respuesta aceptada

Joseph Leng
Joseph Leng el 25 de En. de 2020
Would you be able to show that as an example?
  2 comentarios
Mohammad Sami
Mohammad Sami el 25 de En. de 2020
a1 = subplot(211);
surf(a1,peaks);
colormap(a1,'jet');
a2 = subplot(212);
surf(a2,peaks);
colormap(a2,'parula');
Joseph Leng
Joseph Leng el 28 de En. de 2020
I wasn't able to fix the problem from just this alone, I ended up getting black coloured surfaces (but I didn't know that's how you obtain the axes for the surfaces so that helped!)
In the end I found that changing the shading to 'flat' gave the surfaces the desired colormap
figure(1)
for k1 = 1:r
for k2 = 1:c
pos = pos + 1;
sp{pos} = subplot(r,c,pos);
s{pos} = surf(images{k1, k2});
view(view_az, view_el)
axis square
zlim([0 inf])
set(sp{pos}, 'visible', 'off')
colormap(sp{pos}, 'jet')
shading flat
end
end

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Orange en Help Center y File Exchange.

Productos


Versión

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by