0

我正在尝试用 ggplot 做一个漂亮的图表,但我仍然面临障碍。当我在代码末尾使用 facet_grid 时,会发生错误。伸出援助之手会很棒!

这是我的代码:

# Package
library(ggplot2)
# Function
firstup <- function(x) {
  x <- tolower(x)
  substr(x, 1, 1) <- toupper(substr(x, 1, 1))
  x
}

创建数据

data_F = data.frame(DATE = seq(as.Date('2020-01-21'), as.Date('2020-03-06'), by = 'days'),
                    NB = sample(1:20, 46, replace=TRUE))

管理数据

data_F = data.frame(DATE = data_F$DATE,
                     year = as.numeric(format(data_F$DATE, format = "%Y")),
                     month = as.factor(format(data_F$DATE, format = "%B")),
                     days = as.numeric(format(data_F$DATE, format = "%d")),
                     NB = data_F$NB)

以正确的顺序重新调整月份

data_F$month = as.factor(firstup(data_F$month))
data_F$month = factor(data_F$month,unique(data_F$month))
month = factor(data_F$month,unique(data_F$month))
month = unique(month)
month = as.factor(month)

主要情节

plot1 = ggplot(data_F,aes(x=DATE,y=NB)) +
  geom_bar(stat = "identity", colour="black", fill = "dodgerblue3", width=0.5) +
  scale_x_date(breaks = data_F$DATE, labels = data_F$days, minor_breaks = NULL, 
               expand = expansion(add = 0.3))+
  scale_y_continuous(limits = c(0, 65), breaks = seq(0, 65, by = 5), minor_breaks = seq(0, 65, by = 1))
plot1

创建分段数据

data.segm = data.frame(x=data_F$DATE,y=Inf, xend = data_F$DATE, yend=-Inf,
                       month=data_F$month)

显示两天,例如在第 6 行和第 35 行

i = 6

plot1 = plot1 + geom_segment(data = data.segm, aes_string(x=data.segm$x[[i]],y=data.segm$y[[i]],
                                                        xend=data.segm$xend[[i]],yend=data.segm$yend[[i]]),
                           colour = alpha("gray90",0.5),size=8,inherit.aes = F)

i = 35

plot1 = plot1 + geom_segment(data = data.segm, aes_string(x=data.segm$x[[i]],y=data.segm$y[[i]],
                                                        xend=data.segm$xend[[i]],yend=data.segm$yend[[i]]),
                           colour = alpha("gray90",0.5),size=8,inherit.aes = F)

plot1

并且知道我对 facet_grid 的问题

plot2 = plot1 + facet_grid(.~month, space="free_x", scales="free_x", switch="x")

plot2

乔纳斯

4

0 回答 0