环顾四周,我似乎找不到一种方法来禁用拖动y轴在平移模式,同时也允许缩放两个轴。
有人搞清楚了吗?
该数据是位置正整数计数数据,因此我希望保持缩放Y作为具有较大极值的区域的归一化选项。
我检查了r plotly API教程和Github上的问题,我还检查了r plotly和Google的代码。我能找到的就是这个plotly.js的链接,讨论它:https://github.com/plotly/plotly.js/issues/887这是否意味着没有解决方法?
环顾四周,我似乎找不到一种方法来禁用拖动y轴在平移模式,同时也允许缩放两个轴。
有人搞清楚了吗?
该数据是位置正整数计数数据,因此我希望保持缩放Y作为具有较大极值的区域的归一化选项。
我检查了r plotly API教程和Github上的问题,我还检查了r plotly和Google的代码。我能找到的就是这个plotly.js的链接,讨论它:https://github.com/plotly/plotly.js/issues/887这是否意味着没有解决方法?
1条答案
按热度按时间toiithl61#
如果合并识别是平移还是缩放的功能沿着
relayout
结合使用,就可以创建这种效果。我创建了一些任意数据来演示这是如何工作的。我使用函数
htmlwidgets::onRender
添加Plotly事件侦听器。在我的示例中,我将绘图预设为
dragmode
“pan”。我还将y轴更改为固定位置。要缩放或更改回平移,您将使用模式栏。onRender
函数为plotly_relayout
创建一个事件侦听器。当您在modebar
中选择一个项目时,您将导致relayout
事件。此外,当您更改y轴是否固定在适当位置时,这也是一个relayout
事件。为了区分这是否是由
modebar
中的选择触发的relayout
事件,我使用了if(
...== "dragmode"
更确切地说:
if(evd.includes('dragmode')
,其作用类似于R的str_detect()
。如果这是
modebar
触发的事件,则固定范围状态将根据您是平移还是缩放而更改。字符串
我想指出的是,如果你在缩放后平移,你就把y轴限制在那个时间点显示的任何东西上。要完全重置绘图,您需要在模式栏中选择缩放(即使您不打算使用它),以将y轴更改回 * 不固定 * 范围。
的数据
淘选后:
的
选择缩放、主页后,选择缩放范围(在图上拖动):