我在使用 px 创建条形图时遇到问题。我用 px 散点图进行了测试,所有内容都正确显示为散点图。
对于条形图:年份正确显示在悬停上但不是在轴上,每个增量是 40 年而不是一个月。月份在任何地方都正确显示。
背景:我有一个名称中包含 YYYYMM 的文件列表(202201 是 2022 年 1 月)。我在 Jupyter 上有一个代码来获取文件列表,以字符串格式获取日期部分,然后使用以下方法转换为 dt:
df['date'] = pd.to_datetime(df['dateSTR'], format = '%Y%m')
在条形图上,您可以看到月份是正确的,年份是错误的。如果我使用 df['date'].dt.year,我会得到正确的年份,悬停显示正确的年份,但轴的年份不正确。
如果我使用 xrange['2018-01-01','2024-01-01'] 更改轴的最小最大值,它会缩放到第一个数据元素,我可以看到每个增量是 40 年而不是1个月。
fig_1 = px.bar(df
, x='countryCode', y='date', color='status', orientation='v'
, color_continuous_scale = ['white','#1b95e0']
)
fig_1.update(layout_coloraxis_showscale=False)
fig_1.update_yaxes(tickformat="%b %Y")
fig_1.show()
这是数据(图 2)日期列是日期时间,dateSTR 列是字符串(两种情况下的行为相同)
有什么想法吗?
我认为这个问题并不是真正的情节问题,而是这种类型的可视化(带有日期 y 轴的堆积条形图)根本不起作用。
我将根据您提供的代码使用代码示例来解释我的意思:
import pandas as pd
import plotly.express as px
df = pd.DataFrame({"countryCode": ["CO1", "CO1", "CO3"], "date": ["2022-01-01", "2022-01-01", "2022-03-03"]})
fig = px.bar(df, x='countryCode', y='date')
fig.show()
上面的代码给出了这个图:
在我在这里使用的虚拟日期中,我们有两个具有相同
x
和y
的数据点。 Plotly 看到两个数据点具有相同的 x
值,因此它尝试堆叠条形图。第一个栏获得正确的日期(y 值),但由于第二个栏位于顶部,y 轴值上的日期对第二个栏没有意义。
具有数字 y 轴的堆叠条形图有效,因为堆叠在一起的条形高度与 y 轴相对应。
来自 plotly 文档的示例:
在这里使用散点图是可行的,因为点不会堆叠,如果有两个点具有相同的
x
和y
,它只会显示一个点。