matplotlib 范围滑块或类似解决方案,以避免Plotly中Y轴上的标签重叠

xurqigkl  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(100)

当我研究了很多,我不能找到我的问题的解决方案.我用Plotly express做了一个图,范围滑块是否存在于Y轴?我已经实现了范围滑块为X轴如下,但Y轴是如此混乱,我试图拿出一个解决方案,但我不能实现范围滑块在Y轴上,有没有什么方法可以使这个图表表现得更好?

def chart(df)

    color_discrete_map = {'df1': 'rgb(255,0,0)',
                      'df2': 'rgb(0,255,0)',
                      'df3': '#11FCE4',
                      'df4': '#9999FF',
                      'df5': '#606060',
                      'df6': '#CC6600'}

    fig = px.scatter(df, x='DATE', y='CODE', color='SOURCE', width=1200,
                     height=800,color_discrete_map=color_discrete_map)

    fig.update_layout(xaxis_type='category')
    fig.update_layout(yaxis={'dtick':1})

    fig.update_layout(
        margin=dict(l=250, r=0, t=0, b=20),

    )
#     fig.update_layout(xaxis=dict(tickformat="%y-%m", tickmode = 'linear',  tick0 = 0.5,dtick = 0.75))
        # Add range slider
    fig.update_layout(
        xaxis=dict(
            rangeselector=dict(
                buttons=list([
                    dict(count=1,
                         label="1m",
                         step="month",
                         stepmode="backward"),
                    dict(count=6,
                         label="6m",
                         step="month",
                         stepmode="backward"),
                    dict(count=1,
                         label="YTD",
                         step="year",
                         stepmode="todate"),
                    dict(count=1,
                         label="1y",
                         step="year",
                         stepmode="backward"),
                    dict(step="all")
                ])
            ),
            rangeslider=dict(
                visible=True
            ),
            type="date"
        )
    )
   

           # Add range slider
    fig.update_layout(yaxis={'dtick':1})

    fig.update_xaxes(tickformat = '%Y-%B', dtick='M1')

    fig.update_xaxes(ticks= "outside",
                     ticklabelmode= "period", 
                     tickcolor= "black", 
                     ticklen=10, 
                     minor=dict(
                         ticklen=4,  
                         dtick=7*24*60*60*1000,  
                         tick0="2016-07-03", 
                         griddash='dot', 
                         gridcolor='white')
                    )
    

    st.plotly_chart(fig)

    return

wpx232ag

wpx232ag1#

不幸的是,Plotly不支持y轴的滑块选项。但有一些方法,如缩放:

fig.update_layout(xaxis=dict(fixedrange=False)

使用上面的代码,你会让用户放大一个特定的区域,并有一个清晰的视图。
或者您可以浏览注解以突出显示特定数据或过滤掉数据。

相关问题