Errorbar plot in colormap
    10 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Sujeet Kumar Choudhary
 el 20 de Oct. de 2022
  
    
    
    
    
    Editada: Sujeet Kumar Choudhary
 el 27 de Oct. de 2022
            I could manage to make a colorbar plot using scatter, but I have to show the associated errorbar as well. To bare minimum,  I first created errorbar plot and then scatter plot on the same figure with colormap. However, It would be great if the color of the errorbar matches  the color of the symbol as per the colorbar values. Note that the colorscale is in the log value.  My output figure is following and the data is attached as data_mat.mat file. 

My code is following 
figure();box on;hold on; 
errorbar(data_mat(:,1),data_mat(:,3),data_mat(:,4),'.','MarkerSize',10,'LineWidth',1)
hold on;
scatter(data_mat(:,1),data_mat(:,3),140,data_mat(:,2),'fill');
hcb=colorbar;
colormap('parula');
hcb.Title.String = "title";
set(gca,'ColorScale','log');
set(gca,'FontSize',18);
hcb.FontSize=14;
xlabel('X','FontSize',20);ylabel('Y','FontSize',20);
set(gca, 'Linewidth', 1);
0 comentarios
Respuesta aceptada
  Bjorn Gustavsson
      
 el 21 de Oct. de 2022
        
      Editada: Bjorn Gustavsson
      
 el 27 de Oct. de 2022
  
      You might get away with putting the errorbar-call in a loop. Perhaps something like this:
figure();
clf
box on
hold on
cmp = parula;
dx = 0.1*randn(size(data_mat(:,1)));
for i1 = size(data_mat,1):-1:1
  phE(i1) = errorbar(data_mat(i1,1)+dx(i1),...
                     data_mat(i1,3),...
                     data_mat(i1,4),...
                     '.','MarkerSize',10,'LineWidth',1);
  hold on
end
for i1 = size(data_mat,1):-1:1
  % Set the colour of phE to a colour from a linear interpolation of the
  % full parula colour-map between the max and min values of data_mat(:,4)
  set(phE(i1),...
      'color',interp1(1:size(cmp,1),...
                      cmp,...
                      1+(size(cmp,1)-1)*(log10(data_mat(i1,2))-min(log10(data_mat(:,2))))/(max(log10(data_mat(:,2))) - min(log10(data_mat(:,2))))))
end
hold on;
scatter(data_mat(:,1)+dx,data_mat(:,3),140,data_mat(:,2),'fill');
hcb=colorbar;
colormap('parula');
hcb.Title.String = "title";
set(gca,'ColorScale','log');
set(gca,'FontSize',18);
hcb.FontSize=14;
xlabel('X','FontSize',20);ylabel('Y','FontSize',20);
set(gca, 'Linewidth', 1);
HTH
7 comentarios
  Bjorn Gustavsson
      
 el 27 de Oct. de 2022
				Then just change the interpolation-scheme to logarithmic, as corrected above.
Más respuestas (0)
Ver también
Categorías
				Más información sobre Errorbars 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!




