在 Plotly Dash 图表中放置刻度标签 - Python

Posted

技术标签:

【中文标题】在 Plotly Dash 图表中放置刻度标签 - Python【英文标题】:Place tick label inside in a Plotly Dash chart - Python 【发布时间】:2021-10-25 23:20:42 【问题描述】:

在我的 Plotly Dash 环境中,我遇到了在图表内放置分类刻度标签的问题。

这是应用程序:

import dash
import dash_core_components as dcc
import dash_html_components as html
import dash_bootstrap_components as dbc
import plotly.express as px


animals = ['giraffes', 'orangutans', 'monkeys']
fig = px.bar(x=[20, 14, 23], y=animals)
fig.update_layout(yaxis='ticklabelposition': 'inside')
fig.update_xaxes(range=[0, 50])

chart_bar = dcc.Graph(figure=fig)

app = dash.Dash(__name__,
                external_stylesheets=[dbc.themes.BOOTSTRAP],
                meta_tags=["name": "viewport",
                            "content": "width=device-width, initial-scale=1"])

app.layout = html.Div([
    dbc.Row([
        dbc.Col(children=chart_bar, md=6)],
        className='app-body')
        ],
)

if __name__ == '__main__':
    app.run_server(debug=True)

这是结果

似乎 yaxis='ticklabelposition': 'inside' 不起作用

如果我在应用程序的外部执行相同的图表,它工作得很好。在这里,由完全相同的脚本生成。

似乎某些 Plotly 参数在 Dash 应用程序中不起作用。还是我错了? 我错过了什么?有没有办法把标签放在里面,在条上?

【问题讨论】:

【参考方案1】:

似乎是某些 Plotly 版本的错误。我正在为 Plotly 版本 5.1.05.2.2 运行您的确切代码,并在 Dash 应用程序中获得这些结果:

情节 1 - Plotly 5.1.0:

情节 2 Plotly 5.2.2:

但是,在 Dash 之外运行相同的代码时,我没有收到 Plot 1。所以我怀疑原因是 Dash 和 Plotly 之间的混合版本。

如果需要进一步调查,请提供有关您的版本的信息。运行:

import dash
import plotly

print(dash.__version__)
print(plotly.__version__)

【讨论】:

有趣!谢谢你。我正在运行 Dash 1.13.4 和 Plotly 4.14.3 @Anton 确实很有趣。请考虑同时尝试5.1.05.2.2,看看我们是否在 Dash 和 Plotly 上得到了匹配的结果。 我会试试看。谢谢! 所以在我的例子中:Plotly 5.1.0 - 它在没有 Dash 的情况下正常工作并且 在 Dash 中无法工作 Plotly 5.2.1 - 相同 - 它工作正常没有 Dash 并且 没有在 Dash 中工作 最后我将 Dash 更新到了 1.21.0 版本 - 它在两种设置(在 Dash 内部和外部)中都按预期工作

以上是关于在 Plotly Dash 图表中放置刻度标签 - Python的主要内容,如果未能解决你的问题,请参考以下文章

Plotly (Dash) 勾选标签覆盖

如何使用 Plotly 删除堆叠和分组条形图中的 x 轴刻度标签

Plotly-Dash 实时图表:回调失败

图表不随下拉列表更新(Dash Plotly)

Plotly-Dash:反应迟钝的情节

使用 Plotly 生成有角度的条形图(来自 Dash 的风险分析)