问题描述
所以我有一组数据,其中包含每个条目的时间戳(以毫秒为单位)。 示例数据:
"date","lowest_price","median_price","volume"
"1615219740000","1.61€","13.785"
"1615322760000","1.46€","1.51€","12.496"
"1615322760000","12.496"
"1615322820000","12.496"
"1615322940000","12.496"
"1615323540000","1.49€","12.496"
"1615324140000","12.496"
"1615326000000","1.50€","1.45€","12.413"
我现在想使用数值进行计算/绘图,但对于可视化本身,我想要一个将日期显示为时间戳的间隔(例如 14-03-2021 14:00)
目前我拥有的是:
pp <- ggplot(data=breakout_case,aes(x = date,y = lowest_price,group = 1)) +
geom_line() +
theme(axis.text.x = element_text(angle = 90)) +
labs(title = "Operation Breakout Case Price-chart",x = "Date",y = "Price"
)
pp
它看起来像这样:
所以我需要例如 1.61e+12 等而不是14-03-2021 14:00(不是正确的转换,仅作为示例)
我也不太清楚,为什么 x 轴上已经有一个刻度。
提前致谢
解决方法
转换为 posixCT,然后使用 scale_x_datetime
-properties 格式化 x 轴
使用的样本数据
mydata <- read.table( text = ' "date","lowest_price","median_price","volume"
"1615219740000","1.61€","13.785"
"1615322760000","1.46€","1.51€","12.496"
"1615322760000","12.496"
"1615322820000","12.496"
"1615322940000","12.496"
"1615323540000","1.49€","12.496"
"1615324140000","12.496"
"1615326000000","1.50€","1.45€","12.413" ',sep = ",",header = TRUE)
代码
library( tidyverse )
library( scales )
mydata %>%
dplyr::mutate( timestamp = date %>%
as.numeric %>% #make it numeric
`/`(1000) %>% #divide by 1000
as.POSIXct( origin = "1970-01-01" ) ) %>% #set to POSIXct
ggplot( aes( x = timestamp,y = lowest_price,group = 1 ) ) +
geom_line() +
#set axis properties here
scale_x_datetime( breaks = "3 hour",labels = scales::date_format( "%Y-%m-%d %H:%M" ) ) +
#rotete x-labels
theme( axis.text.x = element_text( angle = 90,vjust = 0.5 ) )
输出