从下拉菜单或按钮

从下拉菜单或按钮

本文介绍了从下拉菜单或按钮 Python/Plotly 将 sqrt 设置为 yaxis 比例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从这里的示例:

但您实际上不必为了更改与 y 轴关联的数据来显示给定系列的平方根.下面的完整片段生成了一个图形,您可以轻松地在显示原始数据和平方根序列之间切换.

图 1:原始数据

情节 2:np.sqrt

完整代码:

将 numpy 导入为 np导入 plotly.graph_objects将 plotly.express 导入为 pxdf = px.data.gapminder().query("year == 2007")# 图形设置fig = go.Figure()fig.add_scatter(mode="markers", x=df["gdpPercap"], y=df["lifeExp"])fig.add_scatter(mode="markers", x=df["gdpPercap"], y=np.sqrt(df["lifeExp"]), visible = False)# 更新菜单按钮按钮 = [dict(method='restyle',标签='线性',可见=真,args=[{'label': '线性','可见':[真,假],}]),dict(method='restyle',标签='sqrt',可见=真,args=[{'label': '线性','可见':[假,真],}])]# 指定更新菜单嗯 = [{'按钮':按钮,方向":向下"}]fig.update_layout(updatemenus=um)# fig.update_yaxes(type="log")图.show()

From this example here : Set linear or log axes from button or dropdown menu I can use a button to change the yaxis from linear to log.However i need to change it to sqrt.

I have looked atfrom Plotly: reference layout axis I have found that there is no type ("sqrt")

Here is the exmaple code:

import plotly.graph_objects as go

fig = go.Figure()

fig.add_trace(go.Scatter(
    x=[0, 1, 2, 3, 4, 5, 6, 7, 8],
    y=[8, 7, 6, 5, 4, 3, 2, 1, 0]
))

fig.add_trace(go.Scatter(
    x=[0, 1, 2, 3, 4, 5, 6, 7, 8],
    y=[0, 1, 2, 3, 4, 5, 6, 7, 8]
))

fig.update_layout(title_text="CIR plot ",
                          updatemenus=[
            dict(
                 buttons=list([
                     dict(label="Linear",  method="update", args=[{"yaxis":{"type": "linear"}}]),
                     dict(label="Log", method="update", args=[{"yaxis":{"type": "log"}}]),
                                  ]),
            )])

 #UPDATE Y AXIS HERE
fig.update_layout( updatemenus=[
            dict(
                 buttons=list([
                     dict(label="Linear-ID",
                          method="relayout",
                          args=[{"yaxis.type": "linear"}]),
                     dict(label="Log-ID",
                          method="relayout",
                          args=[{"yaxis.type": "log"}]),
                                  ]),
            )])
fig.show()

Is there a way to use a button to update the scale to sqrt ?

解决方案

To my knowledge there's currently no way to specify sqrt as scale for the axis that would trigger a visual change to the axis labels like the case is for fig.update_xaxes(type="log"):

But you don't really have to in order to change the data associated with the yaxis to display the square roots of a given series. The complete snippet below produce a figure that will easily let you switch between displaying the raw data and a series with square roots.

Plot 1: Raw data

Plot 2: np.sqrt

Complete code:

import numpy as np
import plotly.graph_objects as go
import plotly.express as px
df = px.data.gapminder().query("year == 2007")

# figure setup
fig = go.Figure()
fig.add_scatter(mode="markers", x=df["gdpPercap"], y=df["lifeExp"])
fig.add_scatter(mode="markers", x=df["gdpPercap"], y=np.sqrt(df["lifeExp"]), visible = False)

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

# specify updatemenu
um = [{'buttons':buttons,
      'direction': 'down'}
      ]

fig.update_layout(updatemenus=um)
# fig.update_yaxes(type="log")
fig.show()

这篇关于从下拉菜单或按钮 Python/Plotly 将 sqrt 设置为 yaxis 比例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 20:35