Plotly图表X轴无法正确显示指定年月字符串值问题求解
问题说明
使用Plotly绘制折线图时,传入X轴的['2022-03', '2022-04', '2022-05', '2022-06']字符串会被框架自动识别为日期格式,X轴按时间规则生成刻度,无法直接展示预设的原始字符串值。
问题原因
Plotly默认开启轴类型自动推断逻辑,当传入的字符串符合YYYY-MM的日期格式规范时,会自动将X轴类型设置为日期轴,按照时间分度规则生成刻度,而非将传入值作为独立分类逐个展示。
解决方案
优先选择手动指定X轴为分类轴的方案,改动最小、逻辑最清晰,不会破坏原始数据格式。
- 核心修改:在图形配置中增加
fig.update_xaxes(type='category')配置,强制X轴按分类类型处理传入值,完全保留原始字符串的内容和展示顺序。
修改后可直接运行的完整代码如下:
from plotly import graph_objs as go import pandas as pd mtds = ['2022-03', '2022-04', '2022-05', '2022-06'] values = [28, 24, 20, 18] data1 = [] for j in range(4): data1.append([mtds[j], values[j]]) df1 = pd.DataFrame(data1, columns=['month', 'counts']) fig = go.Figure() fig.add_trace(go.Scatter( x = df1['month'], y = df1['counts'], name = 'counts history' )) # 强制X轴为分类类型,关闭日期自动解析 fig.update_xaxes(type='category') fig.show()
运行后X轴会严格按照传入列表的顺序,直接展示2022-03、2022-04、2022-05、2022-06四个原始字符串,不会生成额外的日期类刻度。
备选方案:如果不希望修改轴类型,也可以对原始月份字符串做简单格式调整(比如在字符串前加一个空格),绕开Plotly的日期格式匹配规则,但该方案会改动原始展示值,非必要不推荐使用。
内容的提问来源于stack exchange,提问作者john_ny
相关产品推荐
相关产品推荐

