如何更改 Dash Graph 的大小?
How can I change the size of my Dash Graph?
我 运行 遇到了 Dash 上绘图的布局困难。我用 Dash 生成的所有图表似乎都自动调整为非常窄的大小,这使得如果不进行一些创造性的缩放就很难实际查看数据。
举个例子,当我在我的一个破折号上查看源代码时,它似乎计算出主绘图容器 (svg-container) 的高度为 450px,而图形本身的高度为 270px (查看子图)。如果我可以制作图表,比如 700px,那就太好了。
我的问题是:在 Dash 上调整图表尺寸的最佳方法是什么?我的第一个猜测是以某种方式附加一个样式表,但我不确定合适的 css 选择器是怎样的或者是什么。
谢谢!
我通过将地块的 div 作为父 div 中的子 div,然后设置父 div 的大小来完成此操作。像这样:
# main parent div for the app
main_div = html.Div(children = [
# sub-div for the plot
html.Div(children = [
dcc.Graph(id = 'my-plot'),
])
],
# set the sizing of the parent div
style = {'display': 'inline-block', 'width': '48%'})
随着您的应用越来越复杂,您可能需要设置更多 div 嵌套才能使其正常工作。您也可以直接在绘图的子 div 上设置 style
,具体取决于您的配置方式。
此外,我可能建议关注官方 Dash 论坛,因为那里可能会有更多用户,以及 Dash 开发者本人经常发帖:https://community.plot.ly/c/dash
一个Graph
对象包含一个figure
。每个 figure
都有 data
和 layout
属性。
您可以在layout
中设置height
。
dcc.Graph(
id="my-graph",
figure={
"data": [
{"x": [1, 2, 3], "y": [4, 1, 2], "type": "bar"},
{"x": [1, 2, 3], "y": [2, 4, 5], "type": "bar"},
],
"layout": {
"title": "My Dash Graph",
"height": 700, # px
},
},
)
根据Plotly figure
object schema,height
必须是大于或等于10的数字,默认为450(px)。
请记住,您可以创建一个 Graph
对象并稍后在破折号回调中设置 figure
。
例如,如果 dcc.Slider
的 value
影响了 Graph
的 figure
属性,您将拥有:
import plotly.graph_objs as go
dcc.Graph(id="my-graph")
@app.callback(
output=Output("my-graph", "figure"),
inputs=Input("slider", "value")])
def update_my_graph(value):
data = go.Data(
[
go.Bar(x=[1, 2, 3], y=[4, 1, 2]),
go.Bar(x=[1, 2, 3], y=[2, 4, 5]),
]
layout = go.Layout(
title="My Dash Graph",
height=700
)
figure = go.Figure(data=data, layout=layout)
return figure
或者,您可以更改父容器中的视口大小,例如:
dcc.Graph(id='my-graph',style={'width': '90vh', 'height': '90vh'})
这会将图表更改为浏览器视口高度的 90%。您可以在此 link.
上查看更多视口信息
我 运行 遇到了 Dash 上绘图的布局困难。我用 Dash 生成的所有图表似乎都自动调整为非常窄的大小,这使得如果不进行一些创造性的缩放就很难实际查看数据。
举个例子,当我在我的一个破折号上查看源代码时,它似乎计算出主绘图容器 (svg-container) 的高度为 450px,而图形本身的高度为 270px (查看子图)。如果我可以制作图表,比如 700px,那就太好了。
我的问题是:在 Dash 上调整图表尺寸的最佳方法是什么?我的第一个猜测是以某种方式附加一个样式表,但我不确定合适的 css 选择器是怎样的或者是什么。
谢谢!
我通过将地块的 div 作为父 div 中的子 div,然后设置父 div 的大小来完成此操作。像这样:
# main parent div for the app
main_div = html.Div(children = [
# sub-div for the plot
html.Div(children = [
dcc.Graph(id = 'my-plot'),
])
],
# set the sizing of the parent div
style = {'display': 'inline-block', 'width': '48%'})
随着您的应用越来越复杂,您可能需要设置更多 div 嵌套才能使其正常工作。您也可以直接在绘图的子 div 上设置 style
,具体取决于您的配置方式。
此外,我可能建议关注官方 Dash 论坛,因为那里可能会有更多用户,以及 Dash 开发者本人经常发帖:https://community.plot.ly/c/dash
一个Graph
对象包含一个figure
。每个 figure
都有 data
和 layout
属性。
您可以在layout
中设置height
。
dcc.Graph(
id="my-graph",
figure={
"data": [
{"x": [1, 2, 3], "y": [4, 1, 2], "type": "bar"},
{"x": [1, 2, 3], "y": [2, 4, 5], "type": "bar"},
],
"layout": {
"title": "My Dash Graph",
"height": 700, # px
},
},
)
根据Plotly figure
object schema,height
必须是大于或等于10的数字,默认为450(px)。
请记住,您可以创建一个 Graph
对象并稍后在破折号回调中设置 figure
。
例如,如果 dcc.Slider
的 value
影响了 Graph
的 figure
属性,您将拥有:
import plotly.graph_objs as go
dcc.Graph(id="my-graph")
@app.callback(
output=Output("my-graph", "figure"),
inputs=Input("slider", "value")])
def update_my_graph(value):
data = go.Data(
[
go.Bar(x=[1, 2, 3], y=[4, 1, 2]),
go.Bar(x=[1, 2, 3], y=[2, 4, 5]),
]
layout = go.Layout(
title="My Dash Graph",
height=700
)
figure = go.Figure(data=data, layout=layout)
return figure
或者,您可以更改父容器中的视口大小,例如:
dcc.Graph(id='my-graph',style={'width': '90vh', 'height': '90vh'})
这会将图表更改为浏览器视口高度的 90%。您可以在此 link.
上查看更多视口信息