【问题标题】:Y Axis Values Out of Order on Plotly Graph PythonPlotly Graph Python上的Y轴值乱序
【发布时间】:2021-06-12 02:17:32
【问题描述】:

我正在使用 AlphaVantage API 下载数据点,然后我将其转换为 pandas DataFrame。

我想使用 Plotly 绘制带有散点图/折线图的新 DataFrame。 这些图表在 Google Colab 中绘制时看起来很完美,但是,我似乎无法在 PyCharm 和 Jupiter Notebook 中复制我的结果。

在 PyCharm 和 JN 中绘制时,Y 轴值被乱序绘制,就像图表试图创建尽可能直的线一样(参见第二张图像并仔细查看 y 轴)。

以下是代码和图表的简化示例:

在两个实例中使用完全相同的代码

期望的结果(来自 Colab 的示例):

PyCharm 和 JN 的结果(当前问题图):

查看代码:

import requests
import pandas as pd
import plotly.graph_objects as go


# DATA FROM API
response = requests.get(url='https://www.alphavantage.co/query?function=TIME_SERIES_WEEKLY&symbol=IBM&apikey=demo')
response.raise_for_status()
stock_weekly = response.json()['Weekly Time Series']


# CHANGE DATA FORMAT, RENAME COLUMNS AND CONVERT TO DATETIME, FINALLY FLIP TO HAVE DATE IN ASCENDING ORDER
raw_weekly_data = pd.DataFrame(stock_weekly)
weekly_data = raw_weekly_data.T
weekly_data.reset_index(level=0, inplace=True)
weekly_data.rename(columns={
    'index': 'DATE', 
    '1. open': 'OPEN', 
    '2. high': 'HIGH',
    '3. low': 'LOW',
    '4. close': 'CLOSE',
    '5. volume': 'VOLUME'
    }, 
    inplace=True)
weekly_data['DATE'] = pd.to_datetime(weekly_data['DATE'])
weekly_data = weekly_data[::-1]
weekly_data = weekly_data.reset_index(drop=True)


# PLOT
fig = go.Figure()

fig.add_trace(go.Scatter(
    x=weekly_data['DATE'], 
    y=weekly_data['CLOSE']))

fig.show()

【问题讨论】:

    标签: python pandas plotly graphing


    【解决方案1】:

    我在 plotly 上收到了我的问题的答案,并决定分享。我结合使用了以下两种技术:

    错误是由于数据框中列的数据类型造成的。 dtypes 的值是 object 类型的。

    然而,这不是问题是以前版本的 plotly(它 必须安装在您的 Google Collab 上)。较新的版本需要 值是数字。

    您可以像这样将列转换为数字:

    #converting to type numeric
    cols = weekly_data.columns.drop('DATE')
    weekly_data[cols] = weekly_data[cols].apply(pd.to_numeric)
    

    或者只是添加 autotypenumbers='convert types' 来更新你的图:

    fig = go.Figure()
    
    fig.add_trace(go.Scatter(
        x=weekly_data['DATE'], 
        y=weekly_data['CLOSE']))
    
    fig.update_layout(autotypenumbers='convert types')
    
    fig.show()
    

    【讨论】:

      【解决方案2】:

      错误在于 y 轴值的数据类型。我猜它们目前是字符串。尝试将值转换为浮点数,这应该可以解决问题。要将 y 轴中的所有值转换为浮点数(这将是数据框中的“关闭”列),您可以执行以下操作:

      weekly_data['CLOSE'] = weekly_data['CLOSE'].astype(float)

      【讨论】:

        猜你喜欢
        • 2023-03-12
        • 1970-01-01
        • 2021-11-18
        • 1970-01-01
        • 2019-01-24
        • 2021-10-10
        • 2021-06-12
        • 2020-12-15
        • 2020-07-19
        相关资源
        最近更新 更多