Plotly Python API可以使用MapBox(ScatterMapbox)制作漂亮的交互式地图,但无法控制地图范围。例如,如果您想要将图像保存为 PDF 或 PNG 文件并且不希望用户以交互方式缩放,那么能够控制地图范围就很重要。
我面临的问题是没有办法直接表明您只想查看某个区域。例如,无法表明您希望地图仅显示佛罗里达州。
但是,您可以设置地图的中心和缩放级别。当您知道想要可见的框的纬度/经度坐标并且知道中心坐标时,是否可以使用一个公式来定义缩放级别?
例如,如果我希望地图以坐标(center_lat,center_long)为中心并进行缩放,以便可见部分具有西南坐标(sw_lat,sw_long)和东北坐标(ne_lat,ne_long),那么MapBox ZOOM是什么我必须提供的级别?
我意识到该公式可能取决于地图投影,这就是为什么我具体使用 MapBox 和 Plotly。此外,我在 SO 上看到过类似的问题,但这些问题似乎都与通过 JS 使用 MapBox 有关,而不是在 Plotly Python API 中,这使我很难将解决方案转化为我认为可以使用的东西。
我正在尝试使用破折号和绘图生成散点图框,当我在标记内指定符号(例如“正方形”)时,生成地图时它不会呈现。我正在使用回调函数,并且尝试了几个符号,但没有一个有效,但圆圈标记除外。我是否缺少一些明显的东西?这是一个最小的示例,要运行它,您将需要一个 Mapbox 令牌。
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
import datetime as dt
app = dash.Dash()
mapbox_access_token = 'YOUR_MAPBOX_TOKEN_HERE'
app.layout = html.Div(children=[
html.H1('Dashboard'),
dcc.DatePickerRange(id='fecha',
start_date=dt.datetime.today() - dt.timedelta(days=30),
end_date=dt.datetime.today()
),
html.Center(dcc.Graph(
id='mapa',
figure={
'data': [
go.Scattermapbox(
lat=[],
lon=[],
)
],
'layout': go.Layout(
autosize=False,
width=1300,
height=800,
hovermode='closest',
showlegend=False,
mapbox=dict(
accesstoken=mapbox_access_token,
bearing=0,
center=dict(
lat=-32,
lon=-70
),
pitch=0,
zoom=5,
),
)
})
,)
])
@app.callback(
dash.dependencies.Output('mapa', 'figure'),
[dash.dependencies.Input('fecha', 'start_date'),
dash.dependencies.Input('fecha', 'end_date')
])
def update_graph(inicio,fin):
Data = …Run Code Online (Sandbox Code Playgroud) 您好,我是 Dash 新手,我正在按照https://dash.plot.ly/getting-started页面上的教程进行操作,但出现错误,指出未安装 msgpack。我稍后安装了它,然后运行页面上给出的以下代码。
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
app.layout = html.Div(children=[
html.H1(children='Hello Dash'),
html.Div(children='''
Dash: A Web Application framework for Python.
'''),
dcc.Graph(
id='example-graph',
figure={
'data':[
{'x':[1,2,3],'y':[2,4,1],'type':'bar','name':'SF'}
],
'layout': {
'title':'Dash Data Visualisation'
}
}
)
])
if __name__ == '__main__':
app.run_server(debug=True)
Run Code Online (Sandbox Code Playgroud)
当我继续访问http://127.0.0.1:8050/时,出现以下错误
Error loading layout
Run Code Online (Sandbox Code Playgroud)
我阅读了 dash 文档和社区帮助,提出了一些类似的问题,但我无法理解它们。请帮忙。
我 \xe2\x80\x99m 是 Flask 和部署过程的新手\n我的 dash.py 设置如下
\n\nserver = flask.Flask(__name__)\napp = dash.Dash(__name__, server=server)\nRun Code Online (Sandbox Code Playgroud)\n\n和我的 nginx 文件
\n\nserver {\nlisten 80;\nserver_name localhost;\ncharset utf-8;\nclient_max_body_size 75M;\n\nlocation / {try_files $uri @yourapplication; }\nlocation @yourapplication {\n include uwsgi_params;\n uwsgi_pass unix:/var/www/School-Dashboard/dash_clean.sock;\n}\n}\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6but i\xe2\x80\x99m 不确定我必须在 wsgi ini 文件中设置模块参数。
\n\n[uwsgi]\n#application's base folder\nbase = /var/www/School-Dahboard\n\n#python module to import\nmodule = dash_clean:app #?????? WHAT DO I DO HERE\n\n#home = %(base)/venv\npythonpath = %(base)\n\n#socket file's location\nsocket = /var/www/School-Dashboard/dash_clean.sock\n\n#permissions for the socket file\nchmod-socket = 660\n\n\n#location of log files\nlogto = /var/log/uwsgi/%n.log\nRun Code Online (Sandbox Code Playgroud)\n\n … 我试图返回一个条形图,但用于条形图的列根据下拉值选择而变化。我将字典返回到 graph.figure 输出,但收到以下错误;
dash.exceptions.InvalidCallbackReturnValue:
The callback for property \figure``
of component \graph-one` returned a value`
which is not JSON serializable.
In general, Dash properties can only be
dash components, strings, dictionaries, numbers, None,
or lists of those.
Run Code Online (Sandbox Code Playgroud)
我的返回值是一本字典。代码如下;
def create_grouped_bar(df):
return [
go.Bar(
x=df['date'],
y=df[col],
text=df[col],
hoverinfo='text+name',
name=col.title(),
)
for col in df.columns
]
@app.callback(
Output('graph-one', 'figure'),
[Input('filtered_df', 'children'),
Input('freq-radio', 'value'),
Input('graph-one-drop', 'value'),
Input('graph-one-radio', 'value')])
def update_graph(df_json, freq, cols, amount):
dff = pd.read_json(df_json, orient='split')
plot_cols = falls_dd_dict[cols]
plot_df = dff[['date_time_occurred']+plot_cols].copy() …Run Code Online (Sandbox Code Playgroud) 我正在使用 DASH 库,我的应用程序现在有多个选项卡,但我需要让每个选项卡都有不同的 URL,有人能做到这一点吗?
我最近在探索 Plotly,我想知道是否有一种方法可以共享绘图并让查看器在对数轴和线性轴之间切换。
有什么建议吗?
我想在我正在Beeware上开发的 Android 应用程序中使用破折号交互式图表。如何将 Dash Plotly 与 Beeware 结合使用?
我想读取一个 .csv 文件并返回一个 groupby 函数作为回调,以显示为带有“dash_table”库的简单数据表。@Lawliet 的有用答案显示了如何使用“dash_table_experiments”库来做到这一点。这是我被困的地方:
import pandas as pd
import dash
import dash_core_components as dcc
import dash_html_components as html
import dash_table
from dash.dependencies import Input, Output, State
df = pd.read_csv(
'https://gist.githubusercontent.com/chriddyp/'
'c78bf172206ce24f77d6363a2d754b59/raw/'
'c353e8ef842413cae56ae3920b8fd78468aa4cb2/'
'usa-agricultural-exports-2011.csv')
app = dash.Dash()
application = app.server
app.layout = html.Div([
dash_table.DataTable(
id = 'datatable',
),
html.Div([
html.Button(id='submit-button',
children='Submit'
)
]),
])
@app.callback(Output('datatable','data'),
[Input('submit-button','n_clicks')],
[State('submit-button','n_clicks')])
def update_datatable(n_clicks,csv_file):
if n_clicks:
dfgb = df.groupby(['state']).sum()
return dfgb.to_dict('rows')
if __name__ == '__main__':
application.run(debug=False, port=8080)
Run Code Online (Sandbox Code Playgroud) 我需要在 python 中以 plotly 更改子图标题,即将其旋转 90 度。我很努力,但没有成功。
这是我的代码
import plotly.offline as pyo
import plotly.graph_objs as go
from plotly import tools
trace1 = go.Bar(
x=[1, 2, 3],
y=[10, 11, 12]
)
trace2 = go.Bar(
x=[1, 2, 3],
y=[100, 110, 120],
)
trace3 = go.Bar(
x=[1, 2, 3],
y=[1000, 1100, 1200],
)
fig = tools.make_subplots(rows=1, cols=3,
shared_xaxes=True, shared_yaxes=True,
vertical_spacing=0.001,
subplot_titles = ('first_title', 'second_title', 'third_title'))
fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 2)
fig.append_trace(trace3, 1, 3)
fig['layout'].update(height=600, width=600, title='main_title')
pyo.plot(fig, filename='file.html')
Run Code Online (Sandbox Code Playgroud)
所以,我想旋转'first_title','second_title' …