R ggplot如何在水平轴上扩展间隔

时间:2016-11-04 13:10:49

标签: r ggplot2

我有一个包含100个时间戳点的数据集。当我绘制图表时,横轴表示所有时间点,因此所有时间点都重叠在一起。如何在横轴上指示一些常规时间点而不是显示所有时间点?



 EU
              T_DCEP    DCEP
1    05/02/2016 1:28 1.14596
2    05/02/2016 1:39 1.14684
3    05/02/2016 2:04 1.14488
4    05/02/2016 3:15 1.14820
5    05/02/2016 3:34 1.14750
6    05/02/2016 4:40 1.14915
7    05/02/2016 4:56 1.14849
8    05/02/2016 5:22 1.14913
9    05/02/2016 5:55 1.14761
10   05/02/2016 6:07 1.14821
.   ...              ..




我的代码:

ggplot(EU,aes(T_DCEP,DCEP, group = 1)) + geom_line()+geom_point()

enter image description here

1 个答案:

答案 0 :(得分:0)

当绘图时,class变量很重要。转换为有效的日期时间类来解决问题:

#Example data
set.seed(451)
dates <- seq(Sys.time()-99, Sys.time(), length.out=100)
df <- data.frame(x=dates, y=rnorm(100))
head(df)
#                     x          y
# 1 2016-11-04 09:49:09 -0.9431540
# 2 2016-11-04 09:49:10  0.7257408
# 3 2016-11-04 09:49:11  2.5257787
# 4 2016-11-04 09:49:12  1.1916054
# 5 2016-11-04 09:49:13  3.1091791
# 6 2016-11-04 09:49:14  0.2848636

class(df$x)
[1] "POSIXct" "POSIXt"

此示例将正确绘制,因为它是一个正确的日期时间类。

ggplot(df, aes(x, y, group=1)) + geom_point() + geom_line()

enter image description here

但如果我没有合适的日期时间课程,那就像你的榜样。

df$x <- as.character(dates)
ggplot(df, aes(x, y, group=1)) + geom_point() + geom_line()

enter image description here