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.0plotly 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 轴不能正确缩放?的主要内容,如果未能解决你的问题,请参考以下文章

3dmax中三维模型如何等比缩放??

如何自定义 Pandas 日期时间戳@ x 轴

CSS进阶知识点--3D转换及perspective 属性

C# Dundas Charts 自动缩放 Y 轴,没有超过 100% 的值

带有 x 范围滑块的 Y 轴自动缩放

如何在三元图中的刻度上而不是 x 和 y 轴上进行缩放