【发布时间】:2017-12-18 12:42:05
【问题描述】:
我很难在 ggplot2 箱形图的 Y 轴上绘制时间。
任何想法如何将我的 y 轴表示为时间?
目前,我的 Y 轴是数字的,日期标签应用于系列。
我希望在 Y 轴上显示时间 (HH:MM),而不是显示所有数据标签
我的数据:
structure(list(Date = structure(c(17511, 17512, 17513, 17514, 17515), class = "Date"),
T.min = c(1513584134, 1513580301, 1513582918, 1513583058, 1513584465),
T.mean = c(1513585975.14286, 1513584408.14286, 1513584580.57143, 1513583202.2, 1513585681),
T.max = c(1513587691, 1513587419, 1513585508, 1513583516, 1513587100),
min_labels = c("08:02", "06:58", "07:41", "07:44", "08:07"),
mean_labels = c("08:32", "08:06", "08:09", "07:46", "08:28"),
max_labels = c("09:01", "08:56", "08:25", "07:51", "08:51")), .Names = c("Date", "T.min", "T.mean", "T.max", "min_labels", "mean_labels", "max_labels"), row.names = c(NA, -5L), class = "data.frame")
我的绘图(y 轴和绘图值采用 POSIXct 格式):
#Library
library(ggplot2)
library(scales)
#Plot
theme_set(theme_bw())
ggplot(df, aes(x = Date)) +
geom_boxplot(aes(ymin = T.min, lower = T.min, middle = T.mean, upper = T.max, ymax = T.max),
stat = "identity", fill = "antiquewhite", color = "black") +
geom_line(aes(x=Date, y=T.mean),color='firebrick2', size=3, show.legend = FALSE) +
xlab('Shift Start Date') +
ylab('Time') +
coord_cartesian( ylim =c(Y.min, Y.max) ) +
scale_x_date(date_labels = "%d-%b", breaks = pretty_breaks(5)) +
theme(axis.text=element_text(size=15), axis.title=element_text(size=15,face="bold")) +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
theme(axis.text.y = element_blank()) +
geom_text(aes(x=Date, y = T.min, label = min_labels), size=5, vjust=1.5, check_overlap=TRUE) +
geom_text(aes(x=Date, y = T.mean, label = mean_labels), size=5, vjust=-0.5, check_overlap=TRUE) +
geom_text(aes(x=Date, y = T.max, label = max_labels), size=5, vjust=-1.5, check_overlap=TRUE) +
theme(axis.text=element_text(size=15), axis.title=element_text(size=15,face="bold")) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
【问题讨论】:
-
y 轴应该是什么样子?
-
您能否解释一下:“隐藏 Y 轴标签....显示 y 轴标签并隐藏最小和最大数据标签”
-
感谢您的提问,我已将帖子编辑得更清楚。非常感谢!
-
T.mean中的单位是秒还是特定小时? -
您好,数值是POSIXct,所以单位是秒。我想要实现的输出格式是小时和分钟。