X 轴不能正确缩放?
Posted
技术标签:
【中文标题】X 轴不能正确缩放?【英文标题】:X-axis doesn't scale correctly? 【发布时间】:2021-12-14 07:22:10 【问题描述】:这是我的代码 sn-p:
fig = px.line(df, x="epoch_time_ms", y="bacteria_count", line_shape="hv", markers=True, color='bacteria_type')
fig.update_traces(mode="markers+lines", hovertemplate=None)
fig.update_layout(hovermode='x unified')
我的图表看起来像这样
x 轴刻度不正确。例如,前两个数据点之间的时间间隔约为 42 秒,第三和第四个数据点之间的时间间隔约为 18 秒。但是你可以看到点之间的距离并没有真正反映它(即我预计第 3 和第 4 之间的距离就像前 2 个数据点之间距离的一半)。
有没有办法解决这个缩放问题?
谢谢!
附:我在dash 2.0
和plotly 5.3.1
。
【问题讨论】:
我将其转换为日期/时间格式然后使用它会更好吗?fig.update_xaxes(type='date')
@r-beginners 和type='date'
,x 轴只会显示日期......我所有的数据点都在 1 天内。所以所有数据点都会被折叠成一个点。
【参考方案1】:
已构建示例数据框。轴作为时间和纪元毫秒工作。您确定您的纪元时间是数字而不是字符串或对象(即被视为分类而不是连续系列)?
import pandas as pd
import numpy as np
import plotly.express as px
df = pd.DataFrame("time":pd.Series(pd.date_range("1-nov-2021","2-nov-2021", freq="S")).sample(30),
"bacteria_count":np.random.randint(0,500, 30), "bacteria_type":np.random.choice(list("AB"),30))
df["epoch_time_ms"] = df["time"].astype(int) / 1000
df = df.sort_values("time")
fig = px.line(df, x="time", y="bacteria_count", line_shape="hv", markers=True, color='bacteria_type')
fig.update_traces(mode="markers+lines", hovertemplate=None)
fig.update_layout(hovermode='x unified')
fig.show()
fig = px.line(df, x="epoch_time_ms", y="bacteria_count", line_shape="hv", markers=True, color='bacteria_type')
fig.update_traces(mode="markers+lines", hovertemplate=None)
fig.update_layout(hovermode='x unified')
fig.show()
【讨论】:
感谢您的回答。我发现了问题——我有时间去掉日期部分:df['epoch_time_ms'] = pd.to_datetime(df['epoch_time_ms'], unit='ms').dt.time
。似乎破折号情节并没有很好地处理带有时间分量的x轴。
就像我所说的那样,对象变得分类而不是连续轴。在这种情况下,python time 是一个对象。因此给出的问题答案是正确的(您没有提供您正在使用的示例数据或代码)以上是关于X 轴不能正确缩放?的主要内容,如果未能解决你的问题,请参考以下文章