Plotly (Dash) 勾选标签覆盖

Posted

技术标签:

【中文标题】Plotly (Dash) 勾选标签覆盖【英文标题】:Plotly (Dash) tick label overwriting 【发布时间】:2017-12-10 05:51:11 【问题描述】:

我无法获得以下内容来绘制刻度标签

self.months = [2017-01-01', 2017-02-01', ...]



def plot_bar(self):
        print self.data
        app.layout = html.Div(children=[html.H1(children=''), html.Div(children='Discovered monthly'),
        dcc.Graph(
            figure=go.Figure(
            data = self.data,
            layout=go.Layout(
                title='Streams', showlegend=True, barmode='stack', margin=go.Margin(l=200, r=0, t=40, b=20),
                xaxis=dict(tickvals = self.months, ticktext = self.months, title='months')
                )
            ),
        style='height': 300,
        id='my-graph')
        ])

所以基本上我有一个条形图的数字表示,但是当我更改刻度值和刻度标签时,这些数字标签消失了,但是我看不到我应该在那里的日期。我是否缺少显示这些标签的开关?

【问题讨论】:

你有一些样本数据吗? 【参考方案1】:

tickvals 必须是刻度所在的 x 轴的实际值,而不是标签。不知道您的实际数据是什么样的,这里是一个带有一些虚构数据的调整示例:

self.months = ['2017-01-01', '2017-02-01', '2017-03-01']
self.data = [
    'x': [0, 1, 2], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF',
    'x': [0, 1, 2], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal',
]

# X-Axis location for the ticks
self.tickvals = [0, 1, 2]

def plot_bar(self):
    app.layout = html.Div(children=[html.H1(children=''), html.Div(children='Discovered monthly'),
                                    dcc.Graph(
                                        figure=go.Figure(
                                            data = self.data,
                                            layout=go.Layout(
                                                title='Streams', showlegend=True, barmode='stack', margin=go.Margin(l=200, r=0, t=40, b=20),
                                                xaxis=dict(tickvals = self.tickvals, ticktext = self.months, title='months')
                                            )
                                        ),
                                        style='height': 300,
                                        id='my-graph')
                                    ])

注意这如何在 x 轴上将 2017-01-01 映射到对应的值 02017-02-0112017-03-012。我本可以省略2017-02-01(因此self.tickvals 中的1),以防会产生太多标签或在这里选择任意值(例如1.5)来绘制我的标签。正如我们所讨论的条形图,后一个示例缺少有用的应用程序。

【讨论】:

以上是关于Plotly (Dash) 勾选标签覆盖的主要内容,如果未能解决你的问题,请参考以下文章

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

在 python 中使用 panda 库和 Dash Plotly 创建带有标签和值的下拉菜单

Plotly:如何使用plotly-dash在一页上创建“输入文本”并在第二页或选项卡上输出(图形)?

Plotly dash dropdown boarder 没有按预期出现

如何在具有多个唯一图形的布局上实现 Dash/Plotly 清单持久性?

Plotly-Dash:- 文件上传后在 plotly dash 中进行多列过滤