How to set colour bar scale as a power of 10?

조회 수: 2 (최근 30일)
Andi
Andi 2022년 3월 31일
답변: Voss 2022년 3월 31일
Hi everyone,
May somehelp me to adjust the colour bar scale with only major ticks (at 1e-9, 1e-8, 1e-7, 1e-6)
Here is my script (data also attached)
clear all
clc
X = load('PDS_case.csv'); % input data
C_sort = sortrows(X,5);
Tri = C_sort(1:86,:);
data1 = sortrows(Tri,7);
PDS=(data1(:,7))';
data2=data1(:,8:66);
data4=data2';
Y=data4(:,1:86);
X=Y';
UU=[1e-8, 1.5e-8, 2e-8, 2.5e-8, 3e-8, 3.5e-8, 4e-8, 4.5e-8, 5e-8, 5.5e-7
6e-8, 6.5e-8, 7e-8, 7.5e-8, 8e-8, 8.5e-8, 9e-8, 9.5e-8, 10e-8, 10.5e-7]; % these values linked with each color bar, should be make a color bar
r{1}=[X(1:18,:)];
r{2}=[X(19:39,:)];
r{3}=[X(40:54,:)];
r{4}=[X(55:60,:)];
r{5}=[X(61:62,:)];
r{6}=[X(63:65,:)];
r{7}=[X(66,:)];
r{8}=[X(67:68,:)];
r{9}=[X(69:72,:)];
r{10}=[X(73:74,:)];
r{11}=[X(75:76,:)];
r{12}=[X(77:78,:)];
r{13}=[X(79,:)];
r{14}=[X(80,:)];
r{15}=[X(81,:)];
r{16}=[X(82:85,:)];
r{17}=[X(86,:)];
figure
cm = colormap(jet(numel(r)));
cm = colormap(jet);
cm = colormap(jet(numel(r)));
cc = colorbar('vert');
set(cc,'Ticks',((1:numel(UU))/numel(UU))');
set(cc,'TickLabels',num2str(UU'));
ylabel(cc,'Peak dynamic strain')
hold on
for k = 1:numel(r) % ... Then, Remove The 'NaN' Elements ...
ra = r{k};
ra = ra(~isnan(ra));
[f ,x ] = ecdf(ra);
[x ,ia ,ic ] = unique(x);
f = f(ia );
xx = linspace(min(x ),max(x ),100);
ff = interp1(x ,f ,xx );
ffs = smoothdata(ff , 'loess',20);
dx = mean(diff(xx ));
dfdxs = gradient(ffs )./dx ;
plot(xx , dfdxs , '-', 'linewidth', 1, 'Color',cm(k,:))
ylim([0, 8])
xlabel('R')
ylabel('Probability density')
caption = sprintf('Case 1:Events with R<0.5');
sgtitle(caption);
end
hold off
grid
Here are my results
Here is what i required.

채택된 답변

Voss
Voss 2022년 3월 31일
This will make a log-scale colorbar with limits and ticks based on the vector UU (it doesn't go down to 1e-9 because UU doesn't go down to 1e-9, but you can adjust UU as required):
clear all
clc
X = load('PDS_case.csv'); % input data
C_sort = sortrows(X,5);
Tri = C_sort(1:86,:);
data1 = sortrows(Tri,7);
PDS=(data1(:,7))';
data2=data1(:,8:66);
data4=data2';
Y=data4(:,1:86);
X=Y';
% UU=[1e-8, 1.5e-8, 2e-8, 2.5e-8, 3e-8, 3.5e-8, 4e-8, 4.5e-8, 5e-8, 5.5e-7
% 6e-8, 6.5e-8, 7e-8, 7.5e-8, 8e-8, 8.5e-8, 9e-8, 9.5e-8, 10e-8, 10.5e-7]; % these values linked with each color bar, should be make a color bar
UU = (1:0.5:10.5)*1e-8;
r{1}=[X(1:18,:)];
r{2}=[X(19:39,:)];
r{3}=[X(40:54,:)];
r{4}=[X(55:60,:)];
r{5}=[X(61:62,:)];
r{6}=[X(63:65,:)];
r{7}=[X(66,:)];
r{8}=[X(67:68,:)];
r{9}=[X(69:72,:)];
r{10}=[X(73:74,:)];
r{11}=[X(75:76,:)];
r{12}=[X(77:78,:)];
r{13}=[X(79,:)];
r{14}=[X(80,:)];
r{15}=[X(81,:)];
r{16}=[X(82:85,:)];
r{17}=[X(86,:)];
figure
cm = colormap(jet(numel(r)));
cm = colormap(jet);
cm = colormap(jet(numel(r)));
cc = colorbar('vert');
% set(cc,'Ticks',((1:numel(UU))/numel(UU))');
% set(cc,'TickLabels',num2str(UU'));
% set(cc, ...
% 'Ticks',log10([1e-9 1e-8 1e-7]), ...
% 'TickLabels',{'10^{-9}' '10^{-8}' '10^{-7}'});
% clim(log10([1e-9 2e-7]));
ticks = ceil(log10(UU(1))):floor(log10(UU(end)));
set(cc, ...
'Ticks',ticks, ...
'TickLabels',sprintfc('10^{%d}',ticks));
clim(log10([min(UU) max(UU)]));
ylabel(cc,'Peak dynamic strain')
hold on
for k = 1:numel(r) % ... Then, Remove The 'NaN' Elements ...
ra = r{k};
ra = ra(~isnan(ra));
[f ,x ] = ecdf(ra);
[x ,ia ,ic ] = unique(x);
f = f(ia );
xx = linspace(min(x ),max(x ),100);
ff = interp1(x ,f ,xx );
ffs = smoothdata(ff , 'loess',20);
dx = mean(diff(xx ));
dfdxs = gradient(ffs )./dx ;
plot(xx , dfdxs , '-', 'linewidth', 1, 'Color',cm(k,:))
ylim([0, 8])
xlabel('R')
ylabel('Probability density')
caption = sprintf('Case 1:Events with R<0.5');
sgtitle(caption);
end
hold off
grid

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 App Building에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by