无法使用时间戳索引散景折线图的 x 轴

Posted

技术标签:

【中文标题】无法使用时间戳索引散景折线图的 x 轴【英文标题】:Unable to index x-axis of bokeh line chart with timestamps 【发布时间】:2017-06-06 05:12:57 【问题描述】:

我一直在尝试制作散景折线图,但是我遇到了用我的 pandas 数据框中的一列时间戳索引 x 轴的问题。目前我的数据框如下所示:

           TMAX TMIN  TAVG        DAY   NUM
2007-04-30   65   46  55.5 2007-04-30     1
2007-05-01   75   45  60.0 2007-05-01     2
2007-05-02   66   52  59.0 2007-05-02     3
2007-05-03   65   43  54.0 2007-05-03     4
2007-05-04   61   45  53.0 2007-05-04     5
2007-05-05   65   43  54.0 2007-05-05     6
2007-05-06   77   51  64.0 2007-05-06     7
2007-05-07   89   66  77.5 2007-05-07     8
2007-05-08   91   56  73.5 2007-05-08     9
2007-05-09   83   48  65.5 2007-05-09    10
2007-05-10   68   47  57.5 2007-05-10    11
2007-05-11   65   46  55.5 2007-05-11    12
2007-05-12   63   43  53.0 2007-05-12    13
2007-05-13   65   46  55.5 2007-05-13    14
2007-05-14   71   46  58.5 2007-05-14    15
....
[3592 rows x 5 columns]

我想用“DAY”列的值来索引线图,但是,无论我采用哪种方法,都会出错。折线图的文档说“x (str or list(str), optional) – 指定用于 x 轴的变量”。我的代码如下:

xyvalues = np.array([df['TAVG'], df_reg['ry'], df['DAY']])
regr = Line(data=xyvalues, x='DAY', title="Linear Regression of Data", ylabel="Average Daily Temperature", xlabel="Number of Days")
output_file("regression.html")
show(regr)

这给了我错误“TypeError:无法将类型 'Timestamp' 与类型 'float64' 进行比较”。我尝试将其转换为浮动,但它似乎没有效果。任何帮助将非常感激。 df_reg['ry'] 是来自线性回归数据框的数据。

折线图的文档可以在这里找到:http://docs.bokeh.org/en/latest/docs/reference/charts.html#line

【问题讨论】:

看来您需要通过df1 = pd.concat([df[['TAVG', 'DAY']], df_reg['ry']], axis=1) 将两个数据帧连接在一起,然后使用regr = Line(data=df1, x='DAY', title="Linear Regression of Data", ylabel="Average Daily Temperature", xlabel="Number of Days")。如果不起作用,df_reg['ry'].head() 是什么? 【参考方案1】:

Line 内部,您需要将pandas 数据框传递给data 参数,以便能够引用您的变量DAY 来获取x 轴刻度。在这里,我从另外两个创建了一个新的 pandas DataFrame

import pandas as pd
df2 = pd.DataFrame(data=dict(TAVG=df['TAVG'], ry=df_reg['ry'], DAY=df['DAY']))
regr = Line(data=df2, x='DAY',
                 title="Linear Regression of Data",
                 ylabel="Average Daily Temperature",
                 xlabel="Number of Days")
output_file("regression.html")
show(regr)

【讨论】:

以上是关于无法使用时间戳索引散景折线图的 x 轴的主要内容,如果未能解决你的问题,请参考以下文章

带有 HoverTool 的散景线图

无法将日期传递给 nivo 折线图

ValueError:使用带有 seaborn 线图的索引时无法解释输入“索引”

Plotly.js x 轴无法删除线

R为线图指定x轴刻度

kibana-7可视化之折线图