Photographfan 2024-06-20 10:58 采纳率: 50%
浏览 7
已结题

plotly绘图时,为什么Y轴坐标被分拆了?

请教下大家,df行索引为:'2023/6/13','2023/8/15',为什么我下述代码运行后图片上Y轴会拆成4个值?

heatmap = go.Heatmap(
    z=df.values,  
    x=df.columns,  
    y=df.index,  
    text=df.values,  
    texttemplate='%{text:.1f}', 
    colorscale='orrd',  
)
# 创建布局
layout = go.Layout(
    title='热力图示例',
    xaxis_title='X轴',
    yaxis_title='Y轴',
)
# 创建Figure
fig = go.Figure(data=[heatmap], layout=layout)
fig.show()

img

而当我用下述代码,新建一个一样的df时,plotly绘图又正常了。我之前以为是原始df的索引为时间序列的问题,就调整索引格式为文本,但还是解决不了问题。

df =  pd.DataFrame([[0.47,-1.88,0.5,-4.09,-1.54,3.18,2.55],[0.29,-0.31,-1.95,-4.55,-1.63,0.61,-0.69]],\
                   index=['2023/6/13','2023/8/15'],columns=['T-3','T-2','T-1','T+0','T+1','T+2','T+3'])

img

  • 写回答

1条回答 默认 最新

  • 阿里嘎多学长 2024-06-20 11:12
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    在使用 Plotly 绘制热力图时,Y 轴坐标被分拆成多个值可能是由于几个原因造成的。根据你提供的信息和代码,我将尝试分析可能的原因,并给出一些建议。

    1. Y轴标签格式问题:如果Y轴的标签(即DataFrame的索引)是日期格式,Plotly默认可能会尝试解析这些日期并将其显示为日期格式,这可能导致Y轴标签被拆分。你可以通过设置 yaxistype 属性为 'category' 来解决这个问题。

    2. DataFrame索引类型问题:如果原始的DataFrame df 的索引类型不是字符串,而是日期时间类型(datetime),Plotly 可能会尝试将它们转换为日期时间格式显示,这可能导致Y轴显示不正确。确保索引是字符串类型,或者在创建布局时明确指定 yaxis.type='category'

    3. Plotly版本问题:不同版本的 Plotly 库可能在处理日期和时间格式方面有所不同。确保你使用的是最新版本的 Plotly。

    4. 绘图代码问题:在创建 go.Heatmap 对象时,确保 z 参数是二维数组,x 是列名列表,y 是行索引列表。如果 y 参数不是列表形式,Plotly 可能会将其解释为单个值,导致Y轴显示不正确。

    根据你提供的两张图片,我无法直接查看它们的内容,因为我只能处理文本信息。但是,我可以提供一些通用的解决方案:

    • 确保DataFrame的索引是字符串类型:

      df.index = df.index.astype(str)
      
    • 在创建布局时,指定Y轴类型为分类:

      layout = go.Layout(
          title='热力图示例',
          xaxis_title='X轴',
          yaxis=dict(title='Y轴', type='category'),
      )
      
    • 检查并更新 Plotly 版本:

      pip install plotly --upgrade
      
    • 确保 df 的结构是正确的,并且所有数据都是数值类型,索引和列名都是字符串类型。

    如果上述建议仍然无法解决问题,你可以提供更多的信息,例如原始DataFrame的结构和内容,以及你尝试过的解决方案。这样我可以更准确地帮助你解决问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月28日
  • 已采纳回答 6月20日
  • 创建了问题 6月20日