标签: plotly-dash

在 Plotly Python API 中控制 MapBox 范围

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 中,这使我很难将解决方案转化为我认为可以使用的东西。

python mapbox plotly-dash

5
推荐指数
1
解决办法
2190
查看次数

当我用符号在迹线中绘制标记时,它不会显示

我正在尝试使用破折号和绘图生成散点图框,当我在标记内指定符号(例如“正方形”)时,生成地图时它不会呈现。我正在使用回调函数,并且尝试了几个符号,但没有一个有效,但圆圈标记除外。我是否缺少一些明显的东西?这是一个最小的示例,要运行它,您将需要一个 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)

python symbols marker plotly plotly-dash

5
推荐指数
1
解决办法
5886
查看次数

Plotly Dash 加载布局时出错

您好,我是 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 文档和社区帮助,提出了一些类似的问题,但我无法理解它们。请帮忙。

python flask plotly-dash

5
推荐指数
1
解决办法
2万
查看次数

uWSGI +nginx 设置 - Dash(Plotly)部署

我 \xe2\x80\x99m 是 Fl​​ask 和部署过程的新手\n我的 dash.py 设置如下

\n\n
server = flask.Flask(__name__)\napp = dash.Dash(__name__, server=server)\n
Run Code Online (Sandbox Code Playgroud)\n\n

和我的 nginx 文件

\n\n
server {\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}\n
Run 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\n
Run Code Online (Sandbox Code Playgroud)\n\n …

nginx flask uwsgi python-3.x plotly-dash

5
推荐指数
1
解决办法
4005
查看次数

返回数字字典时回调返回值无效

我试图返回一个条形图,但用于条形图的列根据下拉值选择而变化。我将字典返回到 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)

python plotly plotly-dash

5
推荐指数
1
解决办法
6781
查看次数

如何使 dash 中的选项卡具有不同的 URL?

我正在使用 DASH 库,我的应用程序现在有多个选项卡,但我需要让每个选项卡都有不同的 URL,有人能做到这一点吗?

python plotly-dash

5
推荐指数
1
解决办法
4429
查看次数

如何在 Plotly 中启用和禁用对数刻度作为查看器?

我最近在探索 Plotly,我想知道是否有一种方法可以共享绘图并让查看器在对数轴和线性轴之间切换。

有什么建议吗?

python plot axes plotly plotly-dash

5
推荐指数
1
解决办法
5216
查看次数

5
推荐指数
0
解决办法
700
查看次数

从带有 Plotly Dash for Python 的回调中将 Pandas DataFrame 作为 data_table 返回

我想读取一个 .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 pandas plotly-dash

5
推荐指数
1
解决办法
2万
查看次数

在 Plotly Python 中更改子图标题位置/方向

我需要在 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' …

python plotly plotly-dash plotly-python

5
推荐指数
2
解决办法
5563
查看次数