我们正在从不同版本的表中读取性能数据,并创建折线图来比较不同版本的性能指标。当应用程序在本地运行时,回调将按其应有的方式触发(在页面加载时),并且应用程序可用。但是,当应用程序部署到 UNIX 服务器时,回调将停止工作。
错误:回调失败:服务器未响应。
在 http://server_ip:port/_dash-component-suites/dash_renderer/dash_renderer.v1_5_1m1593111735.dev.js:33217:11
我正在制作一个折线图,其中包含大量在超高分辨率下运行的数据。在添加第二个 y 轴时,我发现,plotly svg 组件内的图表右侧会出现一个空白区域。当我关闭第二个轴时,那个空白空间就会消失。当图表在整个屏幕上最大化时,可以清楚地看到。
作为展示,我使用了plotly文档中的一个例子:
from plotly.subplots import make_subplots
import plotly.graph_objects as go
# Create figure with secondary y-axis
fig = make_subplots(specs=[[{"secondary_y": True}]])
# Add traces
fig.add_trace(
go.Scatter(x=[1, 2, 3], y=[40, 50, 60], name="yaxis data"),
secondary_y=False,
)
fig.add_trace(
go.Scatter(x=[2, 3, 4], y=[4, 5, 6], name="yaxis2 data"),
secondary_y=True,
)
# Add figure title
fig.update_layout(
title="Right margin",
showlegend=False
)
# Set x-axis title
fig.update_xaxes(title_text="xaxis title")
# Set y-axes titles
fig.update_yaxes(title_text="<b>primary</b> yaxis title", secondary_y=False)
fig.update_yaxes(title_text="<b>secondary</b> yaxis title", secondary_y=True)
fig.show()
Run Code Online (Sandbox Code Playgroud)
它产生以下图表,不再居中:
我怎样才能摆脱那个空白空间?
我目前正在使用plotlyexpress 来创建Sunburst 图表。然而,我意识到孩子们的标称值是按字母顺序排列的。特别是对于绘制非常不幸的月份......你知道如何处理这个问题吗?也许是财产或某种解决方法?下面有一个例子,你可以自己尝试一下。提前致谢!
import plotly.express as px
import pandas as pd
import calendar
months = [x for x in calendar.month_name if x]
#Create Dataframe
data = []
for m in months:
data.append(['2018', m, 2])
df = pd.DataFrame(data, columns=['Year', 'Month', 'Value'])
#Compute Sunburst
fig = px.sunburst(df, path=['Year', 'Month'], values='Value')
fig.show()
Run Code Online (Sandbox Code Playgroud)
我想添加每个块内 M 和 F 类别的每个计数的百分比值。
用于生成该图的代码。
arr = np.array([
['Dog', 'M'], ['Dog', 'M'], ['Dog', 'F'], ['Dog', 'F'],
['Cat', 'F'], ['Cat', 'F'], ['Cat', 'F'], ['Cat', 'M'],
['Fox', 'M'], ['Fox', 'M'], ['Fox', 'M'], ['Fox', 'F'],
['Dog', 'F'], ['Dog', 'F'], ['Cat', 'F'], ['Dog', 'M']
])
df = pd.DataFrame(arr, columns=['A', 'G'])
fig = px.histogram(df, x="A", color='G', barmode="stack")
fig.update_layout(height=400, width=800)
fig.show()
Run Code Online (Sandbox Code Playgroud) 有没有办法将 pandas 数据框导出到 HTML 文件中,并合并一些额外的代码,使输出可按列排序?
我一直在使用 Dash DataTable 为用户提供对结果进行排序的选项,但我想知道是否有另一种方法不需要运行服务器,用户只需加载 HTML 页面并对结果进行排序。
到目前为止,我已经能够基于这篇 SO post进行半交互式绘图,但我想在 HTML 中添加可排序的表格,在网上搜索后,我不清楚最好的方法是什么(仍然是一个新手) HTML)
我正在使用 Dash Leaflet 地图组件dash-leaflet 进行交互式地图可视化。
dl.GeoJSON我的目标是通过破折号组件的值(例如)过滤大型 GeoJSON 组件( ) dcc.Slider。
我目前的方法如下:
import random
import dash
import dash_html_components as html
import dash_leaflet as dl
import dash_leaflet.express as dlx
import dash_core_components as dcc
from dash.dependencies import Input, Output
# Create some markers.
points = [dict(lat=55.5 + random.random(), lon=9.5 + random.random(), value=random.random()*100) for i in range(100)]
data = dlx.dicts_to_geojson(points)
app = dash.Dash()
app.layout = html.Div([
dl.Map([
dl.TileLayer(),
dl.GeoJSON(id="data-id", data=data)
], center=(56, 10), zoom=8, style={'height': '50vh'}),
html.Div([
html.H5('Filtering'),
dcc.Slider(id='my-slider', min=0, max=100, …Run Code Online (Sandbox Code Playgroud) 这是我最近部署的一个简单的网络应用程序:https ://covid19-visualization-seb.herokuapp.com/
我使用了 Dash 框架并使用 Heroku 进行了部署。
我使用 df =pd.read_csv('owid-covid-data.csv')加载数据集。最新的数据集可以在这里找到:
https://covid.ourworldindata.org/data/owid-covid-data.csv
数据每天都在更新。问题是,如果我只df为链接设置变量,那么服务器启动时它只会从源获取数据一次。因此,如果我想每天保持数据最新,我就必须每天重新启动服务器,这是无稽之谈。
Dash 文档提供了页面加载更新功能,如下所示:
import datetime
import dash
import dash_html_components as html
def serve_layout():
return html.H1('The time is: ' + str(datetime.datetime.now()))
app.layout = serve_layout
if __name__ == '__main__':
app.run_server(debug=True)
Run Code Online (Sandbox Code Playgroud)
当我刷新页面时它起作用(时间自行更新)
但我想在页面加载时重新分配一个变量,不知道如何执行此操作,但出现错误。我尝试过这样的事情:
import dash
import pandas as pd
app = dash.Dash()
df = ''
def get_data():
global df
df = pd.read_csv('https://covid.ourworldindata.org/data/owid-covid-data.csv')
app.layout = get_data
if __name__ == '__main__':
app.run_server(debug=True)
Run Code Online (Sandbox Code Playgroud)
有什么帮助吗?
我试图在应用程序运行时不显示默认的 dcc.graph。我只想在应用程序运行时显示我的图表
这是我的代码,
dbc.Row([
dbc.Col([
dcc.Graph(id='datatable-upload-graph', responsive=True, style={
'display': 'block'
})
], xs=10, sm=8, md=5, lg=6, xl=5)
])
Run Code Online (Sandbox Code Playgroud)
@app.callback(
Output('datatable-upload-graph', 'figure'),
Input('container-datatable', 'data')
)
def display_gantt(container_datatable):
df = pd.DataFrame(container_datatable)
df['Start Date'] = pd.to_datetime(df['Start Date'], errors='coerce')
df['End Date'] = pd.to_datetime(df['End Date'], errors='coerce')
fig = px.timeline(df, x_start="Start Date", x_end="End Date", y="Project Name", color="Status")
fig.update_yaxes(autorange="reversed")
if container_datatable is None:
return []
else:
return fig
app.config['suppress_callback_exceptions'] = True
if __name__ == '__main__':
app.run_server(debug=True, use_reloader=False)
Run Code Online (Sandbox Code Playgroud) 我想使用ipywidgets库中的一些下拉菜单、组合框和其他复杂的小部件组合,这些是我在 jupyter 笔记本中开发的。然而,我被迫使用plotly Dash 进行部署。有没有一种方法可以ipywidgets在绘图 Dash 应用程序中显示,而无需将所有单独的小部件转换为它们的破折号等效项?
我创建了一个 Python Dash 仪表板来交互式显示敏感的客户数据。我在笔记本电脑上通过本地主机使用仪表板。我正在初始化并运行应用程序,如下所示:
app = dash.Dash(__name__)
if __name__ == "__main__":
app.run_server(debug = True)
Run Code Online (Sandbox Code Playgroud)
仪表板的数据是否可以被其他人访问或者只能从我的机器访问?