我在R中使用以下数据框

TIME                 PRICE
2013-01-01 23:55:03 446.6167
2013-01-01 23:55:02 441.0114
2013-01-01 23:54:59 446.7600

我正在使用功能ggplot绘制数据点并使用scale_x_datetime标记固定间隔。
library(ggplot2)  # including necessary libraries
lims <- as.POSIXct(strptime(c("2013-01-01 00:00:00","2013-01-01 23:59:00"), format = "%Y-%m-%d %H:%M:%S"))


ggplot(open,aes(x=TIME,y=PRICE))
   + geom_point(size = 1.0, color="navy")
   + xlab("Time")
   + ylab("Price")
   + ggtitle("time vs Price ")
   + scale_x_datetime(breaks = date_breaks("200 min"), minor_breaks=date_breaks("15 min"), labels=date_format("%H:%M:%S"),limits=lims)

尽管指定了限制,但x轴标签未按如下所示顺序排列:

r - x轴上的时间数据未在R ggplot中排序-LMLPHP

最佳答案

您需要像这样在自己的as.POSIXct(TIME)中放入aes。为了适应有限的3点数据示例,我不得不对代码进行一些更改。

open <- read.table(text="TIME                 PRICE
'2013-01-01 23:55:03' 446.6167
'2013-01-01 23:55:02' 441.0114
'2013-01-01 23:54:59' 446.7600",header=TRUE, stringsAsFactors=FALSE)

lims <- as.POSIXct(strptime(c("2013-01-01 00:00:00","2013-01-01 23:59:00"),
                   format = "%Y-%m-%d %H:%M:%S"))

ggplot(open,aes(x=as.POSIXct(TIME),y=PRICE)) +
geom_point(size = 3.0, color="red")+
xlab("Time")+
ylab("Price")+
ggtitle("time vs Price ")+
scale_x_datetime(breaks = date_breaks("360 min"),
                 minor_breaks=date_breaks("15 min"),
                 labels=date_format("%H:%M:%S"),limits=lims)

r - x轴上的时间数据未在R ggplot中排序-LMLPHP

编辑
您应该尝试使用xts在时间序列对象中转换数据。这样可以正确地安排时间。然后,对它进行fortify以便与ggplot2一起使用。
library(xts)
open <- read.table(text="TIME                 PRICE
'2013-01-01 23:55:03' 446.6167
'2013-01-01 23:55:02' 441.0114
'2013-01-01 23:54:59' 446.7600",header=TRUE, stringsAsFactors=FALSE)
open <- xts(open$PRICE,as.POSIXct(open$TIME))
open <- fortify(open)

lims <- as.POSIXct(strptime(c("2013-01-01 00:00:00","2013-01-01 23:59:00"),
                            format = "%Y-%m-%d %H:%M:%S"))

ggplot(open,aes(x=Index,y=open)) +
geom_point(size = 3.0, color="green")+
xlab("Time")+
ylab("Price")+
ggtitle("time vs Price ")+
scale_x_datetime(breaks = date_breaks("360 min"),
                 minor_breaks=date_breaks("15 min"),
                 labels=date_format("%H:%M:%S"),limits=lims)

r - x轴上的时间数据未在R ggplot中排序-LMLPHP

关于r - x轴上的时间数据未在R ggplot中排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44569190/

10-12 16:30
查看更多