首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用多年数据定义x轴上的月增量。

用多年数据定义x轴上的月增量。
EN

Stack Overflow用户
提问于 2019-04-04 20:22:30
回答 1查看 154关注 0票数 1

你好,我想在x轴上创建一个带有缩写月份标签的图。

这是我的数据:

代码语言:javascript
复制
df <- structure(list(site = structure(c(33L, 34L, 35L, 36L, 37L, 38L,  39L, 40L, 41L, 42L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L,  42L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 33L, 34L,  35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 33L, 34L, 35L, 36L, 37L,  38L, 39L, 40L, 41L, 42L), .Label = c("INDU01", "INDU02", "INDU03",  "INDU04", "INDU05", "INDU06", "INDU07", "INDU08", "INDU09", "INDU10",  "MISS01", "MISS02", "MISS03", "PIRO01", "PIRO02", "PIRO03", "PIRO04",  "PIRO05", "PIRO06", "PIRO07", "PIRO08", "PIRO09", "PIRO10", "SLBE03",  "SLBE04", "SLBE08", "SLBE09", "SLBE11", "V1DA1", "V3DA2", "V8DC2",  "VNPBP70", "APIS01", "APIS02", "APIS03", "APIS04", "APIS05",  "APIS06", "APIS07", "APIS08", "APIS10", "APIS11", "MISS04", "MISS08",  "MISS09", "SLBE01", "SLBE02", "SLBE05", "SLBE06", "SLBE07", "V12DA2",  "V4DC1", "V9DB1", "V9DC2", "VNPBP29", "VNPBP42", "GRPO02", "GRPO03",  "GRPO04", "GRPO05", "GRPO06", "GRPO07", "ISRO01", "ISRO02", "ISRO03",  "ISRO04", "ISRO05", "ISRO06", "ISRO07", "ISRO08", "ISRO09", "ISRO10",  "MISS05", "MISS06", "MISS07", "MISS10", "V10DA4", "V11DB4", "V12DC3",  "V5DA1", "V7DE2", "V7DF2", "GRPO01"), class = "factor"), log.start = structure(c(16218,  16218, 16218, 16218, 16218, 16218, 16218, 16218, 16218, 16218,  16540, 16541, 16550, 16553, 16542, 16543, 16542, 16553, 16553,  16552, 16905, 16905, 16905, 16906, 16905, 16905, 16905, 16905, 16905, 16905, 17270, 17270, 17290, 17290, 17289, 17289, 17291,  17288, 17290, 17290, 17622, 17622, 17655, 17655, 17655, 17655,  17655, 17655, 17655, 17655), class = "Date"), log.end = structure(c(16278,  16271, 16317, 16317, 16271, 16280, 16317, 16317, 16277, 16317,  16664, 16694, 16666, 16667, 16671, 16658, 16647, 16660, 16670,  16667, 17048, 17046, 17010, 17124, 17108, 17098, 17124, 17145,  17008, 17000, 17274, 17379, 17382, 17389, 17459, 17406, 17389,  17459, 17389, 17378, 17780, 17756, 17785, 17784, 17784, 17784,  17756, 17784, 17785, 17713), class = "Date"), year = c("2014",  "2014", "2014", "2014", "2014", "2014", "2014", "2014", "2014",  "2014", "2015", "2015", "2015", "2015", "2015", "2015", "2015",  "2015", "2015", "2015", "2016", "2016", "2016", "2016", "2016",  "2016", "2016", "2016", "2016", "2016", "2017", "2017", "2017",  "2017", "2017", "2017", "2017", "2017", "2017", "2017", "2018",  "2018", "2018", "2018", "2018", "2018", "2018", "2018", "2018",  "2018"), start.month.day = c("05-28", "05-28", "05-28", "05-28",  "05-28", "05-28", "05-28", "05-28", "05-28", "05-28", "04-15",  "04-16", "04-25", "04-28", "04-17", "04-18", "04-17", "04-28",  "04-28", "04-27", "04-14", "04-14", "04-14", "04-15", "04-14",  "04-14", "04-14", "04-14", "04-14", "04-14", "04-14", "04-14",  "05-04", "05-04", "05-03", "05-03", "05-05", "05-02", "05-04",  "05-04", "04-01", "04-01", "05-04", "05-04", "05-04", "05-04",  "05-04", "05-04", "05-04", "05-04"), end.month.day = c("07-27",  "07-20", "09-04", "09-04", "07-20", "07-29", "09-04", "09-04",  "07-26", "09-04", "08-17", "09-16", "08-19", "08-20", "08-24",  "08-11", "07-31", "08-13", "08-23", "08-20", "09-04", "09-02",  "07-28", "11-19", "11-03", "10-24", "11-19", "12-10", "07-26",  "07-18", "04-18", "08-01", "08-04", "08-11", "10-20", "08-28",  "08-11", "10-20", "08-11", "07-31", "09-06", "08-13", "09-11",  "09-10", "09-10", "09-10", "08-13", "09-10", "09-11", "07-01" )), row.names = c(NA, -50L), class = "data.frame")

而当我使用ggplot时..。

代码语言:javascript
复制
library (ggplot2)
p <- ggplot(df, aes(y=year))
p <- p + geom_segment(aes(x=start.month.day,xend=end.month.day,y=year,yend=year),size=2)
p <- p + facet_wrap(~site,ncol=2)

我收到下面的情节..。

我想要在x轴上缩略的每月标签,如‘4月’‘三月’军‘等。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-04 21:04:28

首先,您希望分段表示您的时间段的实际长度,因此您需要将它们作为实际日期。否则,段不是句点的正确表示形式。

其次,您需要将它们作为日期来格式化为日期。

如果您将只有一个月的字符串转换为日期,默认情况下,它将添加年份(当前年份),但仍然有照顾y轴的year变量。

所有这些都说明,下面的代码适用于您:

代码语言:javascript
复制
df[,5] <- as.Date(df[,5], format='%m-%d')
df[,6] <- as.Date(df[,6], format='%m-%d')

ggplot(df, aes(y=year)) + 
 geom_segment(aes(x= start.month.day,xend=end.month.day,
                  y=year,yend=year),size=2) + 
 facet_wrap(~site,ncol=2) 

ggplot将对x轴本身进行良好的格式化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55524316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档