我的数据框只列出了从10月到4月的月份。当我在折线图上绘制这些数据时,它也包括未使用的月份。我只想显示数据中列出的月份,因此图中没有未使用的空间。
我用于剧情的代码
gplot(df,aes(GAME_DATE,DEF_RATING)) +
geom_line(aes(y=rollmean(df$DEF_RATING,9, na.pad = TRUE))) +
geom_line(aes(y=rollmean(df$OFF_RATING,9,na.pad = TRUE)),color='steelblue')
示例数据
GAME_DATE OFF_RATING DEF_RATING
<dttm> <dbl> <dbl>
1 2017-04-12 106.1 113.1
2 2017-04-10 107.1 100.8
3 2017-04-08 104.4 105.1
4 2017-04-06 116.1 105.9
5 2017-04-04 116.9 116.0
答案 0 :(得分:1)
ggplot2
不允许断轴,因为这些轴可能会产生误导。但是,如果您仍想继续此操作,则可以使用刻面模拟断轴。为此,请创建一个分组变量来标记每个&#34;岛&#34;其中数据与唯一的组代码一起出现,然后由这些组代码进行分面。
此外,在绘图之前,数据应转换为长格式,这样您只需拨打一次geom_line
即可获得两条单独的彩色线条。将列映射到aes
内的颜色也会自动生成图例。
这是假数据的一个例子:
library(tidyverse)
# Fake data
set.seed(2)
dat = data.frame(x=1950:2000,
y1=c(cumsum(rnorm(30)), rep(NA,10), cumsum(rnorm(11))),
y2=c(cumsum(rnorm(30)), rep(NA,10), cumsum(rnorm(11))))
dat %>%
# Convert to long format
gather(key, value, y1:y2) %>%
# Add the grouping variable
group_by(key) %>%
mutate(group=c(0, cumsum(diff(as.integer(is.na(value)))!=0))) %>%
# Remove missing values
filter(!is.na(value)) %>%
ggplot(aes(x, value, colour=key)) +
geom_line() +
scale_x_continuous(breaks=seq(1950,2000,10), expand=c(0,0.1)) +
facet_grid(. ~ group, scales="free_x", space="free_x") +
theme(strip.background=element_blank(),
strip.text=element_blank())
答案 1 :(得分:0)
您可以尝试使用&#34; scale_x_date()&#34;来划分x轴。对于你现在的日期:
sum