我在 Jupyter Notebook 中使用Plotly和 Python 生成了一些交互式图表,但我似乎无法将它们导出为HTML文件。根据网上的一些帖子,原本应该显示在右下角的导出菜单根本不存在。
将 Plotly 与 Python 结合使用的工作流程让我感到困惑。我可以编写代码将交互式图表自动保存到本地驱动器吗?或者我必须使用chart_studio?如果是这样,怎么办?
import plotly.graph_objs as go
data = list()
COLORS = ["aqua","sienna","coral","darkgreen","darksalmon",
"darkslateblue","greenyellow","maroon","violet"]
for county, col in zip(COUNTIES,COLORS):
trace = go.Scatter(x = DF.columns,
y = DF.loc[county,:],
name = county,
line = dict(color = col),
opacity = 0.8)
data.append(trace)
fig = go.Figure(data = data,
layout = dict(title = "County-level (Normalized) Daily New Cases"))
fig.show()
Run Code Online (Sandbox Code Playgroud)
我试图删除在 Python 中生成并使用 JS 在 HTML 中显示的绘图中的 ModeBar。根据文档,您可以指定一个配置,例如:
config = dict({'displayModeBar': False})
fig.show(config=config)
Run Code Online (Sandbox Code Playgroud)
但我将无花果导出到 json
graphJSON = json.dumps(fig, cls=plotly.utils.PlotlyJSONEncoder)(不使用 .show() 函数)
然后用JS显示:
<script>
var graphs = {{graphJSON | safe}};
Plotly.newPlot('graph',graphs,{});
</script>
Run Code Online (Sandbox Code Playgroud)
我尝试在 newPlot 调用中指定一个配置,但没有成功,它似乎被忽略了:
Plotly.newPlot('graph',graphs,{},{displayModeBar: false});
Run Code Online (Sandbox Code Playgroud)
转换为 json 时如何指定配置选项?有没有其他方法可以摆脱ModeBar(鼠标悬停时显示的顶部栏)
我正在使用 Plotly 的散点图来可视化多个数据集。
这是我的代码的一部分。下面,我创建了 scatterpolo 实例:
go.Scatterpolar(
r=[dataset_dataframe['word_count'].median(),
dataset_dataframe['char_count'].median(),
dataset_dataframe['capitals'].median(),
dataset_dataframe['num_exclamation_marks'].median(),
dataset_dataframe['num_punctuation'].median()],
name=dataset_name,
theta=['No. of Words', 'No. of Characters', 'No. of Capitals', 'No. of Exclamation Marks', 'No. of Punctuations'],
fill='toself',
line=dict(color='brown'),
subplot=subplot_name),
)
Run Code Online (Sandbox Code Playgroud)
我在这里将其放入布局中:
fig.update_layout(
polar=dict(
radialaxis=dict(visible=True, )),
title='Dataset Statistics')
Run Code Online (Sandbox Code Playgroud)
我对多个数据框执行此操作,这使我可以轻松比较它们。结果很简洁,如下所示:
不幸的是,似乎 的范围theta是使用每个散点实例的最大值自动计算的r。
这不好,因为为了轻松比较数据集,我需要theta所有绘图都处于相同的范围内。
问题:如何将 的范围设置theta为自定义值,例如从 1 到 100?
我以前见过类似的问题但没有答案。
目的是在 Flask 应用程序上显示图像,但配置已更改。
将图表转换为 JSON 且不使用 Fig.show() 时,Plotly 图表上的配置设置如何更改?如果使用了Fig.show(),那么配置将在里面修改。
烧瓶代码:
当然,如果这只是为了显示图表,则会使用Fig.show,但这会将其传递给JSON。
#example flask application with graph
from flask import Flask, render_template, request
import plotly.express as px
import plotly
import numpy as np
import json
#Flask settings.
secret_key = 'verysecretkey123lol' #secret key
app = Flask(__name__)
#simple image
img_rgb = np.array([[[255, 0, 0], [0, 255, 0], [0, 0, 255]],
[[0, 255, 0], [0, 0, 255], [255, 0, 0]]
], dtype=np.uint8)
fig = px.imshow(img_rgb)
#Flask
@app.route("/", methods=['GET', 'POST'])
def create():
image = …Run Code Online (Sandbox Code Playgroud) 我正在使用 Plotly 可视化热图,并且我想在该热图上的某些特定单元格周围添加矩形补丁/边框。
我只是想知道是否有什么办法可以做到这一点。我发现它们在 matplotlib 中有类似的功能,允许用户在热图单元格上添加矩形边框add_patch(Rectangle((i,j), 1, 1, fill=False, edgecolor='gray', lw=3))。但我还没有找到plotly提供的类似功能。
我应该怎么办 ?
我试图将绘图表达树图上的点击链接到数据框上的过滤器。因此,当用户单击图表上的某个国家/地区时,数据框将筛选特定国家/地区,而不是显示所有国家/地区
对于plotly.graph_objects 有“使用点击回调更新点”,但我不确定如何使其适用于plotly express。
import numpy as np
df = px.data.gapminder().query("year == 2007")
df["world"] = "world" # in order to have a single root node
fig = px.treemap(df, path=['world', 'continent', 'country'], values='pop',
color='lifeExp', hover_data=['iso_alpha'],
color_continuous_scale='RdBu',
color_continuous_midpoint=np.average(df['lifeExp'], weights=df['pop']))
fig.show()
## when user clicks on a country in the tree-map, the get_data function filters the df and outputs specific data on the country
def get_data(df, click):
return df[df['country'] == click]
get_data(df,click)
Run Code Online (Sandbox Code Playgroud) 我试图distplot在 PyCharm IDE 中制作并显示一个绘图,但它尝试加载的浏览器似乎永远缓冲。我的数据和图表是这样的:
import plotly.figure_factory as ff
hist_data =
[[23740.0, 66440.0, 47890.0, 40632.0, 51778.0, 59966.0, 92433.0, 101595.0, 53863.0, 27279.0, 49620.0, 14981.0],
[32566.0, 95661.0, 69957.0, 62255.0, 73688.0, 90606.0, 163077.0, 151885.0, 80432.0, 39790.0, 76275.0, 23061.0],
[41811.0, 122388.0, 87849.0, 80795.0, 98960.0, 123870.0, 245555.0, 204934.0, 105540.0, 49233.0, 98183.0, 29583.0]]
# Group data together
group_labels = ['1997', '2007', '2017']
fig = ff.create_distplot(hist_data, group_labels, bin_size=.2)
fig.show()
Run Code Online (Sandbox Code Playgroud)
我不认为这是代码的问题,它似乎与调用图形有关。该代码是为了可重复性。如果有人知道如何调试它,那就太好了。
关于dcc.Store在多选项卡结构应用程序中使用的问题。我想保留/存储选项卡之间的数据切换。我的多页面/选项卡破折号应用程序结构如下所示:
index.py根据选择呈现每个文件的布局。
app.layout = html.Div([
# tabs
html.Div([
dcc.Tabs(
id="tabs",
vertical=True,
className="mb-3",
persistence=True,
children=[
dcc.Tab(label="tab1", value="tab1",
children=[dcc.Tabs(id="subtabs", persistence=True,
children=[dcc.Tab(label='subtab1', value='subtab1'),
dcc.Tab(label='subtab2', value='subtab2')
],
)
]),
dcc.Tab(label="tab2", value="tab2"),
],
)
],
className="row tabs_div"
),
# Tab content
html.Div(id="tab_content"),
])
Run Code Online (Sandbox Code Playgroud)
现在,我想在不同的子选项卡之间交换组件状态/数据。subtab1.py包含dcc.Graphanddata-table和 'subtab2.py contains a series of dcc.Graph组件。
我是否需要dcc.Store在两者中添加组件subtab1.py并subtab2.py存储各个组件并从中读取?我希望能够读取subtab1.pyinsubtab2.py和其他文件的组件状态。
我有一个使用plotly 构建堆积条形图的代码示例:
import plotly.graph_objects as go
x = ['2018-01', '2018-02', '2018-03']
fig = go.Figure(go.Bar(x=x, y=[10, 15, 3], name='Client 1'))
fig.add_trace(go.Bar(x=x, y=[12, 7, 14], name='Client 2'))
fig.update_layout(
barmode='stack',
yaxis={'title': 'amount'},
xaxis={
'type': 'category',
'title': 'month',
},
)
fig.show()
Run Code Online (Sandbox Code Playgroud)
输出以下图:
有没有办法调整绘图布局以按值对每个条形的 Y 轴进行排序?
例如,在第二条 (2018-02) 中,客户端 1 的 Y 值较高,蓝色条应位于红色条的顶部。
在将此标记为重复之前,我已经为此奋斗了相当长一段时间,并尝试了我在网上找到的所有故障排除选项。希望有人知道发生了什么事。
当我尝试执行plotly.express 导入时,它失败并出现以下错误:
File "/mnt/e/Backup/facebook/plotly.py", line 2, in <module>
import plotly.express as px
ModuleNotFoundError: No module named 'plotly.express'; 'plotly' is not a package
Run Code Online (Sandbox Code Playgroud)
如果我尝试,import plotly我不会收到任何错误,但无法使用plotly.express。
我看到的错误修复全部都指向未安装并通过 pip 进行安装。运行pip3 list表明plotly已安装。
ahren@AhrBeast:~$ pip3 list | grep plotly
plotly 4.11.0
plotly-express 0.4.1
Run Code Online (Sandbox Code Playgroud)
从终端导入plotly.express工作正常:
ahren@AhrBeast:~$ python3
Python 3.8.2 (default, Jul 16 2020, 14:00:26)
[GCC 9.3.0] on linux
>>> import plotly.express as px
>>> px.data.iris()
sepal_length sepal_width petal_length petal_width species species_id
0 5.1 3.5 1.4 0.2 setosa 1
1 4.9 3.0 …Run Code Online (Sandbox Code Playgroud) plotly ×10
python ×10
flask ×2
heatmap ×1
matplotlib ×1
pip ×1
plotly-dash ×1
python-3.x ×1
scatter-plot ×1