楼主: Gonsurvi
6673 15

[问答] 求助,ggplot2绘图x轴不能识别为时间格式,如(08:00~20:00),怎么破? [推广有奖]

  • 0关注
  • 0粉丝

初中生

0%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
131 点
帖子
10
精华
0
在线时间
5 小时
注册时间
2014-10-13
最后登录
2017-5-11

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
像用ggplot2画一张x轴一天中不同时刻(每隔2个小时)的气象图,但是x轴不能自动之别为时间格式,导致成图以后x轴的顺序不对,具体如下。
1.数据:

date

time

at

rh

12-13日

8:00:00

18.63

80.60

12-13日

10:00:00

26.20

54.76

12-13日

12:00:00

31.36

31.30

12-13日

14:00:00

34.64

25.76

12-13日

16:00:00

36.15

23.19

12-13日

18:00:00

36.96

21.67

12-13日

20:00:00

36.19

25.77

12-13日

22:00:00

29.61

41.95

12-13日

0:00:00

22.69

56.54

12-13日

2:00:00

23.10

49.02

12-13日

4:00:00

20.03

55.65

12-13日

6:00:00

16.43

72.19

13-14日

8:00:00

19.34

67.98

13-14日

10:00:00

28.10

43.27

13-14日

12:00:00

32.84

28.59

13-14日

14:00:00

36.20

21.51

13-14日

16:00:00

38.53

17.91

13-14日

18:00:00

39.83

16.34

13-14日

20:00:00

38.93

18.38

13-14日

22:00:00

31.61

30.50

13-14日

0:00:00

26.13

38.96

13-14日

2:00:00

26.84

35.80

13-14日

4:00:00

26.27

35.19

13-14日

6:00:00

22.76

47.86

16-17日

8:00:00

18.55

69.40

16-17日

10:00:00

26.15

45.99

16-17日

12:00:00

30.53

32.74

16-17日

14:00:00

33.35

24.69

16-17日

16:00:00

35.24

22.98

16-17日

18:00:00

35.87

22.96

16-17日

20:00:00

34.38

27.17

16-17日

22:00:00

29.20

37.34

16-17日

0:00:00

23.39

54.15

16-17日

2:00:00

18.38

68.98

16-17日

4:00:00

16.46

75.77

16-17日

6:00:00

15.50

78.22


2.代码:
library(ggplot2)
data=read.table("clipboard",header=T,sep="\t")
p=ggplot(data,aes(x=time,y=rh,shape=date))+geom_point(size=5)
p
3.图片效果见附件:

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:ggplot2 gplot plot GPL clipboard 时间序列图 气象 ggplot2

QQ截图20170112201211.png (178.41 KB)

原始数据

原始数据

QQ截图20170112201118.png (180.02 KB)

已在excel中设置过格式

已在excel中设置过格式

1.jpg (347.65 KB)

导入R以后,显示格式为factor

导入R以后,显示格式为factor

无标题.jpg (44.76 KB)

成图之后的时间序列不对

成图之后的时间序列不对

回帖推荐

松石空月 发表于8楼  查看完整内容

您说的如果按时间,不按日期画图,time是factor,关键需要对factor排序;
沙发
Gonsurvi 发表于 2017-1-13 03:19:16 |只看作者 |坛友微信交流群
成图之后的时间没有数据列表中的排,猜测是该列格式不对,尝试使用strptime()进行了转换,还是不行,有没有大神能够帮忙看一下,我论文中需要做大量这样的时间序列图。


使用道具

藤椅
cheetahfly 在职认证  发表于 2017-1-13 13:14:38 |只看作者 |坛友微信交流群
在Excel中,要调整好date和time的格式,确保月、日、时、分、秒都是两位数的数字表示
自定义01.png
自定义02.png
回到R中
library(readr)
library(hws)
data <- read.table("clipboard", header = TRUE)
data$date <- parse_date(data$date)
data$time <- parse_time(data$time)
data %>% tbl_df()
转换.png

使用道具

板凳
cheetahfly 在职认证  发表于 2017-1-16 11:12:04 |只看作者 |坛友微信交流群
或者不调整Excel里的格式,用:
library(readr)
library(lubridate)
library(hws)
data <- read.table("clipboard", header = TRUE)
data$date <- ymd(data$date)
data$time <- parse_time(data$time)

使用道具

报纸
松石空月 发表于 2017-1-18 13:36:49 |只看作者 |坛友微信交流群
我觉得问题主要出在你的时间上,只有时间的情况下,不同日期下的时间R会认为是同一个,因此在原始数据中,你需要录入日期-时间格式。为了显示清晰,我加了条线。(不带线的之前做得,不晓得如何删除)
  1. # 加载包
  2. library(ggplot2)
  3. library(lubridate)
  4. # 准备数据
  5. data.c <- read.table("clipboard", header = T, sep = "\t")
  6. data.c$time <- ymd_hm(data.c$time)
  7. # 画图
  8. ggplot(data.c, aes(time, rh, shape = date))+
  9.   geom_point(size = 2)+
  10.   geom_line()+
  11.   scale_x_datetime(date_breaks = "2 hours",
  12.                    date_labels = "%H",
  13.                    expand = c(0.03,0.03))
复制代码





Rplot.png (6.33 KB)

作废

作废

01.PNG (10.99 KB)

数据样式

数据样式

Rplot.png (8.45 KB)

最终版本

最终版本

使用道具

地板
qiu435 发表于 2017-1-18 14:02:30 |只看作者 |坛友微信交流群
使用as.POSIXct()函数将time 列转换为时间值,再试试

使用道具

7
qiu435 发表于 2017-1-18 14:47:07 |只看作者 |坛友微信交流群
是不是这样?
data$time<- as.character(data$time)
library(ggplot2)
t<-c("0:00:00","2:00:00", "4:00:00","6:00:00", "8:00:00" , "10:00:00" ,"12:00:00", "14:00:00", "16:00:00", "18:00:00", "20:00:00", "22:00:00")
p<-ggplot(data,aes(x=time,y=rh,shape=date))+geom_point(size=5)
p+xlim(t)

data.jpeg (80.36 KB)

data.jpeg

使用道具

8
松石空月 发表于 2017-1-19 12:42:24 |只看作者 |坛友微信交流群
您说的如果按时间,不按日期画图,time是factor,关键需要对factor排序;
  1. # 加载包
  2. library(hms)
  3. library(ggplot2)

  4. # 准备数据
  5. data.c <- read.table("clipboard", header = T)
  6. data.c$time <- factor(data.c$time, levels = unique(data.c$time))

  7. # 画图
  8. ggplot(data.c, aes(time, rh, shape = date))+
  9.   geom_point(size = 2)
复制代码

Rplot03.png (7.07 KB)

Rplot03.png

捕获.PNG (9.26 KB)

捕获.PNG

使用道具

9
Gonsurvi 发表于 2017-1-23 01:24:36 |只看作者 |坛友微信交流群
最近一段时间在复习英语考博,今天才上论坛,首先谢谢大家的帮助,因为硕士论文中确实需要大量的时间序列图。

对我的数据说明一下,是三天的空气温度和湿度变化,从早上8:00开始,至次日清晨6:00结束,共3个昼夜,这三个昼夜分别为12-13日、13-14日和16-17日。

按照“松石空月”的方法,完美解决了这个问题。

看来确实如他所说,关键在于强制对factor排序。
data.c$time <- factor(data.c$time, levels = unique(data.c$time))

在此表示感谢。
祝新春快乐。

使用道具

10
Gonsurvi 发表于 2017-1-23 01:29:56 |只看作者 |坛友微信交流群
qiu435 发表于 2017-1-18 14:47
是不是这样?
data$time
首先谢谢您的帮助
但是我想要的不是这种效果

对我的数据说明一下,是三天的空气温度和湿度变化,从早上8:00开始,至次日清晨6:00结束,共3个昼夜,这三个昼夜分别为12-13日、13-14日和16-17日。

所以最早的时间是8:00,结束的时间是第二天6:00.

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-15 02:33