Apparent bug in getting the current axis (gca) with ginput on a Mac?

2 次查看(过去 30 天)
I have a script in which I click on different subplots to interactively edit data. Let's say the figures are like this:
figure(1)
subplot(2,2,1)
plot(0:1,0:1)
subplot(2,2,2)
plot(0:2,0:2)
subplot(2,2,3)
plot(0:3,0:3)
subplot(2,2,4)
plot(0:4,0:4)
Now, when the figure is open and I click with the mouse on one of the subplots and then do gca, it will return the subplot axis which I clicked on as the current axis. For example, if I move my cursor to the first subplot and click on it and then do gca, I get the following output:
ans =
Axes with properties:
XLim: [0 1]
YLim: [0 1]
XScale: 'linear'
YScale: 'linear'
GridLineStyle: '-'
Position: [0.1300 0.5838 0.3347 0.3412]
Units: 'normalized'
Show all properties
However, when I run ginput(1) and then click on one of the subplots and do gca, it will always return the last subplot which I plotted (in this case the fourth subplot) instead of the subplot axis which I clicked on.
The reason I am wondering if this is a MacOS related bug is because this was not an issue in Windows. I recently switched from using a Windows to a Mac (running MacOS BigSur 11.6.4 and MATLAB 2021a). Unfortunately, I no longer own a Windows machine to test my hypothesis. However, in Windows (as I recall), when you run ginput(1) , click on a subplot, and then call gca, it outputs the subplot axis that you clicked on. If you click on an axis, you should activate that axis as the current axis. This doesn't appear to be the case on Mac when using ginput.
Anyone confirm or deny this or is something else going on?
Thanks
  2 个评论
AndresVar
AndresVar 2022-3-5
编辑:AndresVar 2022-3-5
Hi, I am on windows 11 (Matlab '9.11.0.1873467 (R2021b) Update 3'). I can confirm that ginput activates the axis that was clicked. I don't know what the issue is in mac.
The code below adds the new plot on the axis that was activated by ginput
figure(1);
subplot(2,2,1);
plot(0:1);
subplot(2,2,2);
plot(0:1);
subplot(2,2,3);
plot(0:1);
subplot(2,2,4);
plot(0:1);
ginput(1)
hold on;
plot(0:1,'x--') % it adds the new line on the subplot that was clicked
Edit: tested also on R2020a Update5 on Windows 10, works as you originally expected.
AndresVar
AndresVar 2022-3-7
编辑:AndresVar 2022-3-7
Edit: maybe also try switching from subplot to tiledlayout: Create tiled chart layout - MATLAB tiledlayout (mathworks.com)
that function has the following option
[X,Y,BUTTON,AX] = ginputc(...) returns a fourth result, AX, that contains a vector of axes handles for the data points collected.
MAYBE it works.

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Visual Exploration 的更多信息

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by