我想在 1 个 html 页面上有多个情节图而不使用 tools.make_subplots 方法。(我不想使用它,因为我发现它不容易阅读,而且我希望在每个子图面板中都有一个独特的图例和布局)。
我想用自己独特的布局定义2个图形,并在页面上任意排列它们。我想我知道如何使用 html.Div 对象使用 dash 来做到这一点,但我想知道是否有一种简单的方法可以只使用 plotly 来做到这一点?
我需要在 Dash 图中的图形的一个子图中有多个线图。
在下面的代码中,图中有 3 个子图 'Price' 、 'MMA30' 和 'Volume' 作为 3 个单独的子图。
我想在一个子图中包含“价格”和“MMA30”。
复制代码:
import dash,requests,pandas as pd
from dash.dependencies import Output, Input
import dash_core_components as dcc
import dash_html_components as html
import plotly.tools as tls
from io import StringIO
app = dash.Dash(__name__)
app.layout = html.Div([
html.Div(['Name : ',
dcc.Input(id='input',value='ACC',type='text')
]),
dcc.Graph(id='price_volume')
])
@app.callback(
Output('price_volume', 'figure'),
[Input(component_id='input', component_property = 'value')]
)
def update_graph(in_data):
p=requests.get('http://finance.google.com/finance/getprices?q='+in_data+'&x=NSE&i=61&p=1d&f=d,c,v').text
a=pd.read_csv(StringIO(p),skiprows=range(7),names =['date','Close','Volume'])
a['date']=pd.to_datetime(a.date.str[1:],unit='s').dt.tz_localize('UTC').dt.tz_convert('Asia/Kolkata')
a['Date']=a.date.dt.date
a['Time']=a.date.dt.time
df = a[['Date','Time','Close','Volume']]
df['MMA30']=df.Close.rolling(window=30).mean()
fig = tls.make_subplots(rows=3, cols=1, shared_xaxes=True,vertical_spacing=0.009,horizontal_spacing=0.009)
fig['layout']['margin'] …Run Code Online (Sandbox Code Playgroud) 在下面的示例 Dash 应用程序中,我尝试创建具有可变行数和列数的动态布局。这种动态网格样式布局将填充各种图形,可以通过下拉菜单等进行修改。
到目前为止,我遇到的主要问题与视口单元有关,并试图适当地设置单个图形的样式以适应动态布局。例如,我正在dcc.Graph()通过视口单位修改组件的样式,其中尺寸(例如height,width可能是35vw或23vw取决于列数)。当我从3改变的列数为2,例如,height和width的dcc.Graph()部件清楚地改变,但是这种改变不会反映在实际的呈现布局,直到窗口被物理调整大小(见示例代码下面的图片) .
如何强制dcc.Graph()组件传播这些更改而不必调整窗口大小?
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.config.suppress_callback_exceptions = True
app.layout = html.Div([
html.Div(className='row', children=[
html.Div(className='two columns', style={'margin-top': '2%'}, children=[
html.Div(className='row', style={'margin-top': 30}, children=[
html.Div(className='six columns', children=[
html.H6('Rows'),
dcc.Dropdown(
id='rows',
options=[{
'label': i,
'value': i
} for i in [1,2,3,4]], …Run Code Online (Sandbox Code Playgroud) 如何更改图像大小?我已经使用下面的代码行插入我的图像,但我似乎无法弄清楚你是如何让它变小的
html.Div(html.Img(src=app.get_asset_url('logo.png')))
Run Code Online (Sandbox Code Playgroud)
我试过了:
html.Div(html.Img(src=app.get_asset_url('logo.png')),style={'height':'10%'})
Run Code Online (Sandbox Code Playgroud)
有什么建议
是否有可能在 Dash (Python) 中为按钮编写回调函数以重新加载页面(例如浏览器中的更新按钮?
app.layout =html.Div([
html.Button(id="refresh"),
])
@app.callback(Output('???', '???'),
[Input('refresh', 'n_clicks')])
def refresh(n):
?
return
?
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用无服务器框架将 Plotly Dash 应用程序部署为 AWS Lambda。该应用程序在本地按预期运行,我可以使用serverless wsgi serve命令启动它。serverless deploy报告成功。然而,当调用时,lambda 失败并出现以下错误:
Traceback (most recent call last):
File "/var/task/wsgi_handler.py", line 44, in import_app
wsgi_module = importlib.import_module(wsgi_fqn_parts[-1])
File "/var/lang/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed …Run Code Online (Sandbox Code Playgroud) python amazon-web-services aws-lambda serverless-framework plotly-dash
我正在为大学课程创建仪表板。我创建了 3 个直方图,但是,有许多独特的值给出了很长的 x 值范围。在我的图中,我只想显示计数最高的 10 个或 20 个值(前 10 个值)。有人可以帮我吗?
import plotly.express as px
from jupyter_dash import JupyterDash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
# Build App
app = JupyterDash(__name__)
app.layout = html.Div([
html.H1("forensics "),
dcc.Graph(id='graph'),
dcc.Graph(id='graph1'),
dcc.Graph(id='graph2'),
html.Label([
"select market",
dcc.Dropdown(
id='market', clearable=False,
value='whitehousemarket', options=[
{'label': c, 'value': c}
for c in posts['marketextract'].unique()
])
]),
])
# Define callback to update graph
@app.callback(
Output('graph', 'figure'),
Output('graph1', 'figure'),
Output('graph2', 'figure'),
[Input("market", "value")] …Run Code Online (Sandbox Code Playgroud) 我尝试在网上寻找解决此问题的方法,但没有成功。我找到的最接近的解决方案是this,但是,它是在 R 中的,过去两天我一直在尝试在 Python 中寻找解决方案。
我已经弄乱了Plotly Dash 的交互式图形文档,并且 clickData 和hoverData 似乎只输出图表上单击/悬停的实际数据点的坐标数据。我的目标是通过在图表上单击两次鼠标来获取一对 x,y 坐标,以便我能够使用该对坐标在图表上画一条线。然而,Plotly 的 Dash 交互式绘图在提供不在实际数据点上的鼠标坐标数据方面似乎受到限制。是否有任何解决方案或我错过的文档的明显解决方案/部分?
plotly-dash ×10
python ×10
plotly ×6
dashboard ×2
aws-lambda ×1
cytoscape ×1
image ×1
python-3.x ×1