添加交互
就像 Bokeh 一样,plotly 也提供了各种交互。让我们讨论其中的几个。
创建下拉菜单:下拉菜单是菜单按钮的一部分,始终显示在屏幕上。每个菜单按钮都与一个菜单小部件相关联,该小部件可以在单击该菜单按钮时显示该菜单按钮的选项。在 plotly 中,有 4 种可能的方法可以使用 updatemenu 方法来修改图表。
restyle: 修改数据或数据属性
relayout: 修改布局属性
update: 修改数据和布局属性
animate: 开始或暂停动画
例子:
import plotly.graph_objects as px import pandas as pd # 读取数据库 data = pd.read_csv("tips.csv") plot = px.Figure(data=[px.Scatter( x=data['day'], y=data['tip'], mode='markers',) ]) # 添加下拉菜单 plot.update_layout( updatemenus=[ dict( buttons=list([ dict( args=["type", "scatter"], label="Scatter Plot", method="restyle" ), dict( args=["type", "bar"], label="Bar Chart", method="restyle" ) ]), direction="down", ), ] ) plot.show()
输出:
添加按钮: 在 plotly 中,动作自定义按钮用于直接从记录中快速制作动作。自定义按钮可以添加到 CRM、营销和自定义应用程序中的页面布局。还有 4 种可能的方法可以应用于自定义按钮:
restyle: 修改数据或数据属性
relayout: 修改布局属性
update: 修改数据和布局属性
animate: 开始或暂停动画
例子:
import plotly.graph_objects as px import pandas as pd # 读取数据库 data = pd.read_csv("tips.csv") plot = px.Figure(data=[px.Scatter( x=data['day'], y=data['tip'], mode='markers',) ]) # 添加下拉菜单 plot.update_layout( updatemenus=[ dict( type="buttons", direction="left", buttons=list([ dict( args=["type", "scatter"], label="Scatter Plot", method="restyle" ), dict( args=["type", "bar"], label="Bar Chart", method="restyle" ) ]), ), ] ) plot.show()
输出:
创建滑块和选择器:
在 plotly 中,范围滑块是一个自定义范围类型的输入控件。它允许在指定的最小和最大范围之间选择一个值或一个值范围。范围选择器是一种用于选择要在图表中显示的范围的工具。它提供了用于在图表中选择预配置范围的按钮。它还提供了输入框,可以手动输入最小和最大日期
例子:
import plotly.graph_objects as px import pandas as pd # 读取数据库 data = pd.read_csv("tips.csv") plot = px.Figure(data=[px.Scatter( y=data['tip'], mode='lines',) ]) plot.update_layout( xaxis=dict( rangeselector=dict( buttons=list([ dict(count=1, step="day", stepmode="backward"), ]) ), rangeslider=dict( visible=True ), ) ) plot.show()
输出:
https://ucc.alicdn.com/images/user-upload-01/img_convert/e2fde7a3b228f207d32014c4c4f5134a.gif
小结
在本系列教程中,我们借助 Python 的四个不同绘图模块(即 Matplotlib、Seaborn、Bokeh 和 Plotly)绘制了tips 数据集。每个模块都以自己独特的方式显示情节,每个模块都有自己的一组功能,例如 Matplotlib 提供了更大的灵活性,但代价是编写更多代码,而 Seaborn 作为一种高级语言提供了允许人们通过少量代码。每个模块都可以根据我们想要完成的任务使用。