为啥要以这种方式绘制我的图表?

Posted

技术标签:

【中文标题】为啥要以这种方式绘制我的图表?【英文标题】:Why is plotly plotting my chart this way?为什么要以这种方式绘制我的图表? 【发布时间】:2022-01-13 19:30:20 【问题描述】:

我正在尝试分析之前的市场修正,并找到了一个日期格式为 year.month 的数据集(例如:本月为 2021.11)和其他数据,包括给定日期的价格。我通过 pandas 将其导入并制成 pandas 数据框,对日期和价格进行子集化。

当我使用下面的代码绘制数据时,我会得到一个结果,其中绘图水平上升,随机缩进不应该有。

import plotly.graph_objects as go
import pandas as pd
fig = go.Figure([go.Scatter(x=analysedata['Date'], y=analysedata['P'])])
fig.update_xaxes(
    rangeslider_visible=True,
    rangeselector=dict(
        buttons=list([
            dict(count=1, label="1m", step="month",                                        
                 stepmode="backward"),
            dict(count=6, label="6m", step="month",  
                 stepmode="backward"),
            dict(count=1, label="YTD", step="year", 
                 stepmode="todate"),
            dict(count=1, label="1y", step="year", 
                 stepmode="backward"),
            dict(step="all")
        ])
    )
)
fig.show()

[![在此处输入图片描述][2]][2]

![熊猫数据框][1] [1]:https://i.stack.imgur.com/bQyka.png [2]:https://i.stack.imgur.com/oKAFx.png

【问题讨论】:

尝试将您的日期列转换为日期时间:analysedata['Date'] = pd.to_datetime(analysedata['Date'].astype(str), format='%Y.%m') 它稍微改变了图表,但不幸的是问题仍然存在。感谢您的帮助。 【参考方案1】:

问题是熊猫数据框中性能列的数据类型

解决方法是用这种方式将数据类型改为数值:

import plotly.graph_objects as go
analysedata = data[['Date','P']]  
analysedata.set_index(['Date'], drop = False ,inplace = True)

pd.to_datetime(analysedata['Date'].astype(str), format='%Y.%m')
new = pd.to_numeric(analysedata['P'])

fig = go.Figure([go.Scatter(x=analysedata['Date'], y=new)])
fig.show()

请小心使用“new =”,否则在绘图时会返回并看到错误数据类型的值。

绘制结果: Market since 1800s

【讨论】:

以上是关于为啥要以这种方式绘制我的图表?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我无法在 R Shiny 上绘制图表?

在 AlertManager 报警通知中展示监控图表

构建一个 JavaScript 库,为啥要以这种方式使用 IIFE?

在我的 matplotlib 图表上绘制了多少个数据点?

可编辑的 javascript 图表 - 以交互方式调整条形图或饼图部分的大小

C#/ Excel:在图表上使用最大系列尺寸