繁体   English   中英

如何在 Plotly Python 中设置多索引 x 轴的范围?

[英]How to set the range of multi-index x-axis in Plotly Python?

我想在 Plotly Python 图中更改 x 轴的范围,其中 x 轴必须有两个索引。 我想限制从 [10,2] 到 [12,1] 的范围,但fig.update_xaxes(range=[[10,2],[12,1]])似乎不起作用。

那就是我试过的:


import plotly.graph_objs as go
import pandas as pd

# create data
df = pd.DataFrame({'x1': [10,10,11,11,12,12], 'x2': [1,2,1,2,1,2], 'y': [1, 2, 3, 4, 5, 6]})

# create a scatter plot
fig = go.Figure()
fig.add_trace(go.Scatter(x=[df['x1'], df['x2']], y=df['y']))
fig.show()

链接到示例 2

现在,我用fig.update_xaxes(range=[[10,2],[12,1]])操纵 x-xaxis,

import plotly.graph_objs as go
import pandas as pd

df = pd.DataFrame({'x1': [10,10,11,11,12,12], 'x2': [1,2,1,2,1,2], 'y': [1, 2, 3, 4, 5, 6]})

fig = go.Figure()
fig.add_trace(go.Scatter(x=[df['x1'], df['x2']], y=df['y']))

# set the range of the double-index x-axis
fig.update_xaxes(range=[[10,2],[12,1]])

fig.show()

但没有任何变化:

链接到示例 2

有人知道我做错了什么吗? 还是 Plotly 不允许我做我想做的事? 非常感谢!

我不确定 plotly 是否明确允许你做你想做的事——我相信 multiindex 被 plotly 解释为数字 x 坐标,并且 multiindex 显示在它上面,所以 plotly 并不真正“理解”multiindex 编号系统你有。

我可以建议的一种可能性是一个丑陋的 hack——你首先需要pip install -U kaleido然后可以检索 plotly 使用的默认 xaxis 范围:

x_min, x_max = fig.full_figure_for_development().layout.xaxis.range

x_minx_max结果分别等于-0.32131661442006275.321316614420063 然后你可以找到每个刻度之间的间距:

tick_spacing = (x_max - x_min) / 6

我已将除以 6 硬编码,但您可以通过除以数据中的唯一多索引数来使此解决方案不那么脆弱。

然后将这个tick_spacing的倍数加减到 x_min 和 x_max。 例如:

fig.update_xaxes(range=[x_min + tick_spacing, x_max - tick_spacing])

在此处输入图像描述

虽然它是一个多分类轴,但范围就像有一个简单的数字轴一样工作。 有六个值,从 x=0 开始到 x=5。

显示所有值

fig.update_xaxes(range=[0,5])

图

在您的示例中使用范围

fig.update_xaxes(range=[1,4])

图2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM