将配置模式添加到 Plotly.Py 离线 - 模式栏离线、模式、Plotly、Py

2023-09-06 14:24:02 作者:隐疾

Plotly.js 包含配置 ModeBar 所需的所有参数,它允许人们从显示栏中获取选项(例如在线编辑图形的链接).但是,这似乎没有在 Plotly.py API 中实现.在js版本中:

Plotly.js includes all the parameters needed to configure the ModeBar, which allows one to take away options from the display bar (such as the link to edit the graph online). However, this does not appear implemented in the Plotly.py API. In the js version:

Plotly.newPlot('myDiv', data, layout, {displayModeBar: false});完全移除模式栏.Plotly.newPlot('myDiv', data, layout, {displaylogo: false}, {modeBarButtonsToRemove: ['sendDataToCloud','hoverCompareCartesian']}) 允许指定要删除的每个按钮想实施.

Plotly.newPlot('myDiv', data, layout, {displayModeBar: false}); Removes the modebar entirely. Plotly.newPlot('myDiv', data, layout, {displaylogo: false}, {modeBarButtonsToRemove: ['sendDataToCloud','hoverCompareCartesian']}) allows one to specify each button to remove which I'd like to implement.

我已经编辑了这个,因为我找到了一个解决方法......请参阅我在下面发布的答案.对于那些想要使用其他参数的人来说可以派上用场.

I've edited this as I've found a workaround... see the answer I posted below. Can come in handy for those that have other parameters that they would like to use.

推荐答案

打开 HTML 文件,搜索 modeBarButtonsToRemove:[] 然后替换为你想要删除的按钮,我的目的 modeBarButtonsToRemove:['sendDataToCloud']

Open the HTML file, search for modeBarButtonsToRemove:[] then replace with the buttons you want removed, for my purpose modeBarButtonsToRemove:['sendDataToCloud']

要删除 Plotly 徽标和链接,请搜索 displaylogo:!0 并替换为 displaylogo:!1

To remove the Plotly Logo and link, search for displaylogo:!0 and replace with displaylogo:!1

这是一个使用 Python 的演示:

Here is a demo using Python:

from plotly.offline import plot
import plotly.graph_objs as go
import webbrowser
import numpy as np
import pandas as pd

# generate your Plotly graph here

N = 500
y = np.linspace(0, 1, N)
x = np.random.randn(N)
df = pd.DataFrame({'x': x, 'y': y})
data = [go.Histogram(x=df['x'])]

# plot it for offline editing
HTMLlink = plot(data, show_link=False, auto_open=False)[7:] #remove the junk characters
# now need to open the HTML file
with open(HTMLlink, 'r') as file :
  tempHTML = file.read()
# Replace the target strings
tempHTML = tempHTML.replace('displaylogo:!0', 'displaylogo:!1')
tempHTML = tempHTML.replace('modeBarButtonsToRemove:[]', 'modeBarButtonsToRemove:["sendDataToCloud"]')
with open(HTMLlink, 'w') as file:
  file.write(tempHTML)
del tempHTML

webbrowser.open(HTMLlink)