Logarithmic 2D colormap plot

5 Ansichten (letzte 30 Tage)
De Ar
De Ar am 14 Sep. 2019
I want to scale my 2D dose distribution logarithmically with appropriate tick such as the displayed image. I can't seem to change the ticks accordingly with the scaled values. Could anyone help me?
Code
%% Read 2D dose map
fileID = fopen('2DDoseMap.txt','r');
formatSpec = '%f %f %f %f';
dataarray_size = [4 Inf];
dataarray = fscanf(fileID, formatSpec, dataarray_size);
dataarray = dataarray';
%% Store each column into vectors
% the first three columns in the text file are the x coordinates, y coordinates and intensity values
x = dataarray(:,1); y = dataarray(:,2);
dose = (dataarray(:,3));
%% Rearrange the dose vector into a dose map
xi = unique(x); yi = unique(y);
[X,Y] = meshgrid(xi, yi);
dosemap = reshape(dose, size(X));
% Create a spatial referencing object associated with the image, and
% use the referencing object to set the x- and y-axes limits in the
% world coordinate system
conversion = ( abs(min(xi(:))) + abs(max(xi(:))) ) / length(xi); % in cm/pixel
sizex = size(dosemap, 2);
sizey = size(dosemap, 1);
xmax = sizex * conversion;
ymax = sizey * conversion;
RI = imref2d(size(dosemap));
RI.XWorldLimits = [-xmax/2 xmax/2];
RI.YWorldLimits = [-ymax/2 ymax/2];
%% Plot
h = figure();
set(h, 'units', 'normalized', 'outerposition', [0 0 1 1]);
imshow(dosemap, RI, [], 'colormap', jet(256))
c = colorbar;
c.Label.String = 'Dose (GeV/g per primary)';
set(gca, 'FontSize', 16)
set(gca, 'ColorScale', 'log')
xlabel('cm'); ylabel('cm');
shading interp

Antworten (0)

Kategorien

Mehr zu Orange finden Sie in Help Center und File Exchange

Produkte


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by