图形工具栏发生了什么变化?为什么它是一个轴工具栏?我怎么才能把纽扣放回去呢?

213次浏览(过去30天)
从R2018b开始,缩放、平移、数据提示等工具不再位于图形窗口顶部的工具栏上。这些按钮现在在“轴”工具栏中,只有当你将鼠标悬停在图上时才会出现。我如何把按钮放回图形窗口的顶部?

接受的答案

MathWorks支万博1manbetx援小组
编辑:MathWorks支万博1manbetx援小组 2022年2月22日
从R2018b版本开始,您可以在一个轴上拖动平移和滚动缩放,而无需调用任何MATLAB函数或选择任何工具栏按钮。大多数类型的轴都包含一组默认的内置交互,但是您可以通过设置轴的交互属性来定制它们。有关控制图表交互性的更多信息,请参阅以下链接:
您还可以使用“addToolbarExplorationButtons”函数将工具返回到图形工具栏。请参考下面的示例代码:
surf(peaks)\naddToolbarExplorationButtons(gcf) %添加按钮到图形工具栏
你也可以用下面的代码隐藏或删除坐标轴工具栏:
\n\nax.工具栏。Visible = 'off';%关闭轴工具栏\n%或\nax。工具栏= [];删除轴工具栏数据
如果你想确保图形总是用工具栏中的工具打开,并且坐标轴永远不包含工具栏,请执行以下代码:
> >设置(groot defaultFigureCreateFcn, @(无花果、~)addToolbarExplorationButtons(图)
如果您使用的是R2018b或R2019a版本,请执行以下代码:
> >设置(groot defaultAxesCreateFcn, @ (ax, ~)组(ax.Toolbar,“可见”,“关闭”))
如果您使用的是R2019b及以上版本,请执行以下代码:
> >集(大的,“defaultAxesToolbarVisible”,“关闭”)
重新启动MATLAB时,上述设置将被重置。为了确保这些设置即使在MATLAB重新启动后也被使用,将上面的“set”命令放在“startup”中。m的文件。“启动。m’文件,当放在MATLAB路径上时,在程序启动过程中运行。有关“启动”的更多信息。M '文件,请参见以下链接:
//www.tianjin-qmedu.com/help/matlab/ref/startup.html
更新(8/15/19):
感谢您对坐标轴工具栏的所有评论和建议。
我们已经听取了您的反馈,并与社区成员一起努力改进axis工具栏的体验。在R2019a中,我们发布了对轴工具栏的几个增强,包括更快的启动时间,能够直接悬停在工具栏上以使其可见,以及提高了密集表面数据的性能。此外,在R2018b更新5中,我们对坐标轴工具栏的启动时间进行了性能改进。我们将继续开发增强的轴工具栏体验,并再次感谢您的反馈,帮助我们改进我们的产品。s manbetx 845
你可透过以下连结下载最新资料://www.tianjin-qmedu.com/downloads/web_downloads/
23日评论
约翰
约翰 2019年10月30日
我很高兴看到MathWorks正在致力于解决这个问题。我有两点改进建议。新工具栏的两个主要问题是:1)浏览图形需要更长的时间;2)处于哪种模式并不明显。
1)如果我选择一条线,然后我想使用框缩放,我必须:点击编辑箭头取消选择它,将光标移动到图形的另一侧,等待悬停,然后单击缩放图标。这曾经是一个单一的点击缩放图标。这个问题可以通过在编辑模式下使工具栏可见(悬停在编辑模式下不起作用)来轻松解决,这样用户就可以直接单击缩放图标。此外,允许在编辑模式下进行一些导航也会很好。
2)用户无法快速判断他们是处于编辑模式还是导航模式(当然你可以查看工具栏上的图标,看看它是否被选中,但这很烦人)。当我处于导航模式时,光标是一个白色箭头(在这种模式下,我可以滚动鼠标滚轮来缩放),但当我处于编辑模式时,我看到同样的白色光标箭头(在这种模式下,滚动鼠标滚轮不起任何作用)。以前,每个动作都有不同的光标图标(例如+,-等),所以你知道你处于哪种模式,因此鼠标将如何响应。我建议制作一个单独的导航图标,这样用户就可以很容易地看到他们所处的模式。

登录评论。

更多答案(5)

迈克尔Montouchet
迈克尔Montouchet 2019年6月25日
我用的是散射器。以前旋转我显示的东西很容易,现在我必须使用这个命令才能使用相机旋转:
addToolbarExplorationButtons (gcf)
过去很简单。
为什么Matlab会删除很好的特征?
Matlab优于Python的原因是UI、支持、良好的文档和用户友好性。万博1manbetx请继续这样做,不要删除让它变得容易的东西。否则,我就不明白使用Matlab而不是Python的意义。

实验后奥特曼
实验后奥特曼 2019年1月10日
编辑:实验后奥特曼 2019年1月10日
为了让那些不关注我博客的读者受益,米歇尔·赫希(Michelle Hirsch)发表了文章 下面的注释 昨天,这让我们对这个问题有了一些了解:
请放心,团队正在深入研究反馈,以找出解决问题的最佳方法。
整个对话中有一件事让我困惑(尤其是在MTLAB Answers上)。没有人提到默认的轴交互,这是我们在轴工具栏中介绍的。实际上,我们认为这是最大的突破,因为你根本不需要与工具栏交互,就可以缩放、平移、旋转或向图表添加数据提示。对此有什么想法吗?在18b的图上有一个巨大的横幅,介绍了这些新的手势,所以我们认为人们会发现它们。
我还可以从你的帖子中澄清一些事情:
*工具条不是由营销人员驱动的。这在很大程度上是由我们对提高关键功能的可发现性的兴趣所驱动的,这些功能被淹没在菜单和工具栏中。
*坐标轴工具栏的创建主要不是为了支持移动到web图形。万博1manbetx我们希望它能解决多个问题:
**一个停靠在桌面上的图形的工具栏可以离图形本身很远。
**我们希望能够在轴级别定义交互,而不是图形级别,因为交互是特定于轴的。坐标轴工具栏是朝着这个方向迈出的一步
8的评论
为副总经理
为副总经理 2022年6月10日
动态可见性(褪色效果)不仅仅令人讨厌。我一直都这么认为 无形的元素 基本上是最 -直观的东西,你可以合并到一个UI。除此之外,我发现它偶尔会非常滞后或坏掉。我已经数不清有多少次我试图让坐标轴工具栏弹出,但什么也没有得到,只会在大约10秒内出现CPU占用的巨大峰值,因为什么都没有发生。最后,我不得不点击没有响应的轴,无意中添加了一个数据提示,或者创建了一个无休止的缩放框,它将永久地跟随光标,直到我关闭图形。
然而,在这些变化之前,视图控件非常麻烦,甚至到了可笑的地步。至少在2D中,FEX akzoom()解决了这个问题。现在它变成了一团由隐式和显式控件、不可见的UI元素和延迟组成的混乱。

登录评论。


斯科特Nuccio
斯科特Nuccio 2019年6月26日
编辑:MathWorks支万博1manbetx援小组 2021年9月22日
这是我能想到的最好的。我想分享一下。
在我的创业公司。m文件I have the following line. They overwrite the new figure functions such that everytime you create a figure, the axes toolbar is removed and my script for adding the appropriate buttons to the figures toolbar is called.
试一试% #好吧
如果~ verLessThan (matlab的“9.5”
集(大的,“defaultFigureCreateFcn”@(无花果~)figToolbarFix(图));
集(大的,“defaultAxesCreateFcn”@ (ax, ~)集(ax。工具栏,“可见”“关闭”));
结束
结束
我为工具栏添加按钮的脚本名为“figToolbarFix”。M '和生活在我的'用户->文档-> matlab'文件夹与我的'启动。m的文件。
函数[] = figToolbarFix(hFig)
这个函数的摘要在这里
自定义默认图形工具栏
% hFig =待定制图形的句柄
%示例:figToolbarFix(gcf);
%示例:hFig=figure;figToolbarFix (hFig);
启用旧的“缩放”,“旋转”,“平移”,“数据提示”等按钮
addToolbarExplorationButtons (hFig)
%加载一个漂亮的图像用于我们的按钮。查看MATLAB\release\toolbox\ MATLAB\图标获取其他选项,或者
自己做吧。注意双重转换(rgb -> ind -> rgb)来规范化png图像。
[img1,map1] = rgb2ind(imread(fullfile(matlabroot,...
“工具箱”matlab的“图标”“tool_plottools_show.png”))、32);
[img2,map2] = imread(fullfile(matlabroot,...
“工具箱”matlab的“图标”“pageicon.gif”));
将图像从索引转换为真彩色(想要真彩色RGB值为0到1)
Icon1 = ind2rgb(img1,map1);
Icon2 = ind2rgb(img2,map2);
获取要附加到的工具栏的隐藏句柄。默认情况下,'图工具栏'是唯一一个活动的
%,并应列出最后假设一个新的空白数字。使用的图;Allchild (gcf)'显示所有子节点
hToolbar = findall (gcf,“类型”“uitoolbar”);% hToolbar = allchild (hFig);hToolbar = hToolbar(结束);
%%用于分离属性编辑器和绘图浏览器按钮
在工具栏的末尾添加一个新的uipushtool。
% uipushtool (hToolbar CData, icon1,…
%“TooltipString”,“属性编辑器”,…
%’ClickedCallback’,‘propertyeditor’,……
%“分离器”,“对”,……
% ' HandleVisibility ', '关闭');
在工具栏的末尾添加一个新的uipushtool。
% uipushtool (hToolbar CData, icon2,…
% 'TooltipString','Plot Browser',…
%’ClickedCallback’,‘plotbrowser’,……
%“分离器”,“关闭”,…
% ' HandleVisibility ', '关闭');
%%用于打开/关闭绘图工具前一状态的单个切换(使用视图菜单显示/隐藏绘图/浏览器/编辑器)
uitoggletool (hToolbarCData的icon1,...
“TooltipString”“属性编辑器”...
“OnCallBack”“plottools(“”)”...
“OffCallBack”“plottools(“关闭”)”...
“分隔符”“上”...
“HandleVisibility”“关闭”);
结束
拿着,往前走!!
也可以查看更多信息和自定义:
祝你好运
2的评论
马特·J
马特·J 2019年9月12日
编辑:马特·J 2019年9月13日
测试是否 hToolbar 是否为空似乎是需要的。否则就会经常出错,
如果~ isempty (hToolbar)
uitoggletool (hToolbarCData的icon1,...
“TooltipString”“属性编辑器”...
“OnCallBack”“plottools(“”)”...
“OffCallBack”“plottools(“关闭”)”...
“分隔符”“上”...
“HandleVisibility”“关闭”);
结束

登录评论。


布鲁诺陈德良
布鲁诺陈德良 2019年9月14日
复制我的帖子 在这里
对于R2019b,之前发现的所有技巧都不再有效。
我发现这个很管用
集(大的,“defaultAxesCreateFcn”...
@ (ax,变长度输入宗量)开始(计时器(“StartDelay”, 1“ExecutionMode”“singleShot”“TimerFcn”@(变长度输入宗量)axtoolbar (ax, {}))));
你可以把它放在startup。m文件
如果~ verLessThan (MATLAB的“9.7”
集(大的,“defaultAxesCreateFcn”...
@ (ax,变长度输入宗量)开始(计时器(“StartDelay”, 1“ExecutionMode”“singleShot”“TimerFcn”@(变长度输入宗量)axtoolbar (ax, {}))));
结束
1评论
thosman
thosman 2019年9月28日
编辑:thosman 2019年9月30日
以下是在2019b中不使用计时器删除工具栏的另外两种方法。正如在其他地方提到的,将两个方法的代码放在你的startupm中。
方法1)
从周围玩删除工具栏,我发现AxesCreateFcn方法不再工作,因为cla(ax,'reset')被调用后,轴被创建(当保持是'关闭'或轴NextPlot属性是“替换”,这是默认值)。这将把坐标轴属性重置为默认值(其中似乎包括工具栏)。
这种方法要求坐标轴在默认情况下具有hold on行为,从而绕过了有问题的类代码路径。
函数SetDefaultFigureToolbar ()
%所有数据返回2018年之前的样式数据
%注意!这将强制所有轴在默认情况下保持“on”
将工具栏重新添加到图形中
删除轴工具栏和交互
默认设置轴处于保持'on'模式
试一试% #好吧
如果~ verLessThan (matlab的“9.5”% if matlab版本>= 2018b
集(大的,“defaultFigureCreateFcn”@(无花果~)addToolbarExplorationButtons(图));
集(大的,“defaultAxesCreateFcn”, @axDefaultCreateFcn);
集(大的,“defaultAxesNextPlot”“添加”);%默认保持'on'行为
结束
结束
结束
函数axDefaultCreateFcn (hax ~)
在轴的创建上,删除工具栏和交互。
%:
% https://undocumentedmatlab.com/blog/improving-graphics-interactivity
试一试
hax。交互= [];
hax。工具栏= [];
%忽略-旧的Matlab版本
结束
结束
方法2)
通过将工具栏的默认可见属性设为false来移除工具栏。此方法不能消除交互 哪些已经被证明可以提高表现 ,但方法1或Bruno的计时器方法将允许交互更新/删除。
集(大的,“defaultAxesToolbarVisible”“关闭”
默认行为的改变
最后,值得重申的是,方法1通过默认保持来改变默认行为。方法2不允许对默认交互进行调整。Bruno的timer方法应该能够在不改变matlab默认行为的情况下适应这两种情况。

登录评论。


Mattiepi
Mattiepi 2020年4月7日
像这个字符串中的许多其他工具一样,我发现axis工具的最新表现形式是有bug的,并且没有旧的做事方式有用。实际上,我很欣赏与按钮交互的必要性(它应该是一个切换按钮,以确保用户知道当前哪个模式是“开启”),而不是让程序“猜测”我想做什么。仅仅因为我点击了并不意味着我需要到处都有数据提示。我真诚地希望The MathWorks能把这些抱怨放在心上,恢复2018b之前与图形交互的方法。

s manbetx 845


释放

目前还没有发布。

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!