Data tip when using two y-Axes
    6 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Konvictus177
 am 31 Mär. 2022
  
    
    
    
    
    Bearbeitet: Konvictus177
 am 1 Apr. 2022
            Hi,
I have two y-axis. How can I display both y-values when I create a data tip?
Thanks.
aMatrix = rand(20,30);
yAxis1 = 32.*(1:size(aMatrix,1));
yAxis2 = 165.*(1:size(aMatrix,1));
xAxis = 1:size(aMatrix,2);
yyaxis left
imagesc(xAxis, yAxis1, aMatrix);
ax = gca;
ax.YColor = ax.XColor;
ylabel('Left Side')
yyaxis right
imagesc(xAxis, yAxis2,aMatrix);
ax.YColor = ax.XColor;
ylabel('Right Side')  
0 Kommentare
Akzeptierte Antwort
  Benjamin Kraus
    
 am 31 Mär. 2022
        It is a bit tricky to do with images, because you need to specify one value for every pixel of the image, but I think this will do basically what you were asking:
aMatrix = rand(20,30);
yAxis1 = 32.*(1:size(aMatrix,1));
yAxis2 = 165.*(1:size(aMatrix,1));
xAxis = 1:size(aMatrix,2);
yyaxis left
imagesc(xAxis, yAxis1, aMatrix);
ax = gca;
ax.YColor = ax.XColor;
ylabel('Left Side')
yyaxis right
im = imagesc(xAxis, yAxis2,aMatrix);
ax.YColor = ax.XColor;
ylabel('Right Side')
% You need to create a datatip first before you can set the DataTipTemplate
% on an image. You can delete it immediately after it is created.
dt = datatip(im);
delete(dt);
% Create a matrix the same size as the image data to use in the data tip.
yAxis1DataTip = yAxis1'+zeros(size(aMatrix));
yAxis2DataTip = yAxis2'+zeros(size(aMatrix));
% Add two rows to the data tip, one that shows Y1, and the other that shows
% Y2.
im.DataTipTemplate.DataTipRows(end+1) = dataTipTextRow("Y1",yAxis1DataTip);
im.DataTipTemplate.DataTipRows(end+1) = dataTipTextRow("Y2",yAxis2DataTip);
3 Kommentare
  Benjamin Kraus
    
 am 1 Apr. 2022
				You need one value per pixel in the image.
Your code is creating two values per pixel in the image:
[xAxisDataTip, yAxis1DataTip]
What you can do is create your own strings, then have one string per pixel:
string(xAxisDataTip) + ", " + string(yAxis1DataTip);
The full code would look like this:
aMatrix = rand(20,30);
yAxis1 = 32.*(1:size(aMatrix,1));
yAxis2 = 165.*(1:size(aMatrix,1));
xAxis = 1:size(aMatrix,2);
yyaxis left
im1 = imagesc(xAxis, yAxis1, aMatrix);
ax = gca;
ax.YColor = ax.XColor;
ylabel('Left Side')
yyaxis right
im2 = imagesc(xAxis, yAxis2, aMatrix);
ax.YColor = ax.XColor;
ylabel('Right Side')
% You need to create a datatip first before you can set the DataTipTemplate
% on an image. You can delete it immediately after it is created.
dt = datatip(im2);
delete(dt);
% Now customize the data tip.
xAxisDataTip = xAxis+zeros(size(aMatrix));
yAxis1DataTip = yAxis1'+zeros(size(aMatrix));
yAxis2DataTip = yAxis2'+zeros(size(aMatrix));
im2.DataTipTemplate.DataTipRows(end+1) = dataTipTextRow("X1 Y1",string(xAxisDataTip) + ", " + string(yAxis1DataTip));
im2.DataTipTemplate.DataTipRows(end+1) = dataTipTextRow("X2 Y2",string(xAxisDataTip) + ", " + string(yAxis2DataTip));
im2.DataTipTemplate.DataTipRows(1) = [];
Weitere Antworten (0)
Siehe auch
Kategorien
				Mehr zu Geometric Transformation and Image Registration finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

