使用多个子图更改 y 轴(线性、对数、sqrt)的设置按钮,Plotly

2023-12-23

我想设置一个按钮,在线性、对数和开方之间更改 3 个子图的 Y 轴。

来自 @vestland 对我之前问题的回答:从下拉菜单或按钮中将 sqrt 设置为 y 轴刻度-Python/Plotly https://stackoverflow.com/questions/66226542/set-sqrt-as-yaxis-scale-from-dropdown-or-button-python-plotly,我有一个可行的解决方案,为每个子图(lin、log、sqrt)绘制 3 条线,并通过按钮控制可见的线。

然而,下载的绘图的 HTML 反应性不是很好,所以我在想:

对于对数和线性使用 y.axis.type 更好,并且每个子图仅使用可见(True,False)。

这是工作示例代码,它使用控制链接的按钮创建 3 个子图

#@title EXAMPLE SQRT axis change { form-width: "20px" }
import numpy as np
import plotly.graph_objects as go
import plotly.express as px
from plotly.subplots import make_subplots
df = px.data.gapminder().query("year == 2002 or year == 2007 ")
 #3 subplots with one legend linking all
fig = make_subplots(1, 3)
for country, grp in df.groupby (["country"]):
  grp1= grp.query("year == 2002 ")
  fig.add_trace(go.Scatter(x=grp1["gdpPercap"], y=grp1["lifeExp"], legendgroup=country, visible = True,mode='markers', name = country),   col=1, row=1)
  fig.add_trace(go.Scatter(x=grp1["gdpPercap"], y=np.sqrt(grp1["lifeExp"]), legendgroup=country, visible = False, mode='markers', name = country),   col=1, row=1)
  fig.add_trace(go.Scatter(x=grp1["gdpPercap"], y=np.log10(grp1["lifeExp"]), legendgroup=country, visible = False, mode='markers', name = country),   col=1, row=1)
   #adding a second plot that has the same labels and from legend are selected togheter.
  grp2= grp.query("year == 2007 ")
  fig.add_trace(go.Scatter(x=grp2["gdpPercap"], y=grp2["lifeExp"], legendgroup=country, visible = True,mode='markers',name = country, showlegend=False),   col=2, row=1)
  fig.add_trace(go.Scatter(x=grp2["gdpPercap"], y=np.sqrt(grp2["lifeExp"]), legendgroup=country, visible = False, mode='markers',name = country, showlegend=False),   col=2, row=1)
  fig.add_trace(go.Scatter(x=grp2["gdpPercap"], y=np.log10(grp2["lifeExp"]), legendgroup=country, visible = False, mode='markers',name = country,showlegend=False),   col=2, row=1)
  
   #Adding third plot
  fig.add_trace(go.Scatter(x=grp2["gdpPercap"], y=grp2["pop"], legendgroup=country, visible = True,mode='markers',name = country, showlegend=False),   col=3, row=1)
  fig.add_trace(go.Scatter(x=grp2["gdpPercap"], y=np.sqrt(grp2["pop"]), legendgroup=country, visible = False, mode='markers',name = country, showlegend=False),   col=3, row=1)
  fig.add_trace(go.Scatter(x=grp2["gdpPercap"], y=np.log10(grp2["pop"]), legendgroup=country, visible = False, mode='markers',name = country,showlegend=False),   col=3, row=1)

# buttons for updatemenu
buttons = [dict(method='restyle',
                label='linear',
                visible=True,
                args=[{'label': 'linear',
                       'visible':[True, False, False],
                      }
                     ]),
           dict(method='restyle',
                label='log',
                visible=True,
                args=[{'label': 'log',
                       'visible':[False, False, True],
                      }
                     ]),
           dict(method='update',
                label='sqrt',
                visible=True,
                args=[{'label': 'linear',
                       'visible':[False, True, False],
                      }
                     ])]
           
# specify updatemenu        
um = [{'buttons':buttons,
      'direction': 'down'}
      ]

fig.update_layout(updatemenus=um)
fig.show()

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用多个子图更改 y 轴(线性、对数、sqrt)的设置按钮,Plotly 的相关文章

随机推荐

  • 如何使我自己的注释处理器增量?

    我创建了一个名为的注释处理器简易偏好设置 https github com amin amini EasyPrefs当我尝试在我的项目中使用它时 它显示以下警告 请求增量注释处理 但禁用支持 因为以下处理器不是增量的 net android
  • 将 Future[List[String]] 转换为 List[String]

    我有以下代码 Some db run unionPermissionQuery result map map name toList 我收到以下错误 error found scala concurrent Future List Stri
  • 如何修复 at=error code=H13 desc="连接关闭而无响应"?

    它正在 localhost 上运行 但在 heroku app 上关闭 2020 08 15T02 15 31 851406 00 00 app web 1 npm ERR errno 1 2020 08 15T02 15 31 85196
  • 如何在每个帖子中实现 og:tag ?

    在developer ctp 文件中的cakephp 项目中 我已经实现了og tags 我已经完成了四种类型 当我添加新帖子时 当时我想实现每个帖子都应该有这样的 og 标签 在 Cakephp 3 x 中你可以简单地使用这个 this
  • 当 Android 应用程序在后台时使用 Chromecast 设置音量

    我正在开发一款 Android 应用 可将内容流式传输到 Chromecast 设备 我没有找到有关当应用程序在后台时更改远程媒体播放器音量的方法的文档 看方法setUpRemoteControl in VideoCastManager类
  • 如何在 GDB 中“重新加载”源文件

    里面有命令吗gdb我可以用它来 重新 加载 刷新 源文件 据我所知 gdb仅适用于源目录 根据使用 GDB 调试 源代码 http davis lbl gov Manuals GDB gdb 8 html 并且没有特定的 刷新 命令 我的问
  • WooCommerce:根据选择的支付网关向卡添加费用

    我需要根据客户在 WooCommerce 购物车中选择的付款方式添加信用卡费用百分比 需要将其添加到购物车总额中 以便将包括费用在内的总金额发送到支付网关 例如 如果购物车总额为 100 英镑 如果客户选择 信用卡 付款 我想在交易中添加
  • 如何使用Fortify Scan 16.11通过project.Json扫描dotnet core

    我创建了一个默认的 Net Core 1 0 1 类库 并更改了 project json 中的 buildOptions 以包含 debugType Full 我使用 16 11 的集成 VS 2015 Fortify Scan 并收到以
  • GAE 上的 NextJS - 错误:EROFS:只读文件系统

    我正在尝试将带有自定义 server js 的 Next 应用程序部署到 GAE 中 我可以在本地甚至在 google GCP CLI 上毫无问题地运行该项目 现在的问题是应用程序成功部署到 GAE 之后gcloud app deploy
  • 如何禁用innodb索引

    我试图通过临时禁用 InnoDB 表的索引来加速 InnoDB 表中的批量插入 ALTER TABLE mytable DISABLE KEYS 但它给出了一个warning Level Code Message Note 1031 Tab
  • 读取文件无法正常工作

    我正在尝试通过流式传输方式通过我的服务器将文件下载给我 这是我的脚本 header Content Description File Transfer header Content Type application octet stream
  • IN 内多个值的 jdbc preparedStatements

    如何设置 sql 的值IN它可以保存变量数字 例如 WHERE 状态 IN 4 6 7 PreparedStatement ps con prepareStatement SELECT ea FROM employeeAssignment
  • 无法在移动/ipad 浏览器上浮动 twitter bootstrap 导航栏

    当您向下滚动页面时 使用 navbar 和 navbar fixed top 类会将导航栏浮动在页面顶部 这似乎不适用于移动 iPad 浏览器 为什么以及如何让它们也漂浮在移动浏览器上 在 ipad safari chrome Androi
  • 将 java Map 转换为自定义 key=value 字符串

    I have TreeMap
  • 有鼻子测试的 GUI 吗?

    过去几个月我一直在使用nosetests 来运行我的Python 单元测试 它确实可以完成工作 但对于直观地显示哪些测试正在运行或正在破坏的情况来说 它并不是很好 我使用了其他几个基于 GUI 的单元测试框架 它们提供单元测试状态的可视化快
  • Three.js 中的旋转方向或用手习惯

    我注意到当我绕 Z 轴旋转模型时 如下所示 model rotateZ rotatedAngle Math PI 180 它似乎绕轴逆时针旋转 这个观察准确吗 这有记录在某处吗 我找不到它 也许我使用了错误的搜索词 这是可配置的吗 最重要的
  • Python 中的矩阵向​​量运算

    我发过一个类似的帖子here https stackoverflow com questions 53384285 initialize the first index of a list in python 现在我试图概括整个数字矩阵所做
  • 将 Vue.js v-on 事件添加到 D3 SVG 元素

    是否可以将 VueJS v on 事件添加到 D3 中的 SVG 元素 我想对 SVG 的每个矩形元素使用 v on mouseover 功能 我试图通过添加来做到这一点v on mouseover active active 作为 D3
  • SqlConnection和SqlDataReader的重用

    如果我想在不同的表上运行多个 SELECT 查询 我可以对所有表使用相同的 SqlDataReader 和 SqlConnection 吗 以下是明智的吗 我输入得很快 所以它缺少 try catch MySqlCommand myComm
  • 使用多个子图更改 y 轴(线性、对数、sqrt)的设置按钮,Plotly

    我想设置一个按钮 在线性 对数和开方之间更改 3 个子图的 Y 轴 来自 vestland 对我之前问题的回答 从下拉菜单或按钮中将 sqrt 设置为 y 轴刻度 Python Plotly https stackoverflow com