我正在尝试创建非常简单的绘图 - 基本上是一个折线图,但是在线下面的区域用于指定AM和PM(我在切面网格中生成其中的几个,因为我希望读者能够快速看到它们之间的差异AM和PM值。)
我的难点在于使用 geom_area 会引入一个中断,其中ampm值从 AM 变为 PM 。
如果删除geom_area,则绘图将由连续的geom_line正确表示。
如果添加geom_area,则会再次发生中断。
我还没有在网上找到解决方案。有谁知道如何消除这个突破?
example of gap added using geom_area
# sample data
clicks <- c(513, 400, 200, 101,45, 60,89, 222, 385, 628, 1004, 987, 1020,970, 753, 645, 580, 723, 823, 765, 894, 710, 623, 500)
day <- rep("Monday", 24)
hour <- seq(0,23)
am <- rep("AM", 12)
pm <- rep("PM", 12)
ampm <- append(am,pm )
df_click_data.monday <-data.frame(day, hour, ampm, clicks)
df_click_data.monday$ampm <-factor(df_click_data.monday$ampm, levels=c("AM","PM"))
# simple plot to illustrate problem
p <- ggplot(df_click_data.monday, aes(x = hour, y=clicks )) +
geom_line(size=0.4) +
geom_area(aes(fill=ampm))
p
答案 0 :(得分:3)
这是一种解决方法,可以添加一个人工点来正确填充“AM&#39;面积:
new.lines <- df_click_data.monday[df_click_data.monday$hour==12,]
new.lines$ampm <- "AM"
new.lines$hour <- 11.9999
df_click_data.monday <- rbind(df_click_data.monday, new.lines)
p <- ggplot(df_click_data.monday, aes(x = hour, y=clicks )) +
geom_line(size=0.4) +
geom_area(aes(fill=ampm))
p
或者,您可能想要使用geom_bar(stat = "identity")
:
ggplot(data = df_click_data.monday, aes(x = hour, y = clicks, fill = ampm)) +
geom_bar(stat = "identity")
ggplot(data = df_click_data.monday, aes(x = hour, y = clicks, fill = ampm)) +
geom_bar(stat = "identity", width=1)