刻面自由比例“y”不适用于双轴

时间:2021-01-22 18:43:40

标签: r ggplot2 limit facet-wrap

我尝试覆盖 2 个图形,我在 facet 中使用了自由 Y 比例来正确显示数据:

set.seed(123)

df <-data.frame(
    var1 = 15000 + c(0, cumsum(runif(49, -10, 10))),
    var2 = rnorm(100, 10, 1),
    cate= factor(LETTERS[1:4]),
    date = seq(as.Date("2002-01-01"), by="1 month", length.out=100))

df$var1[df$cate=="A"]=rnorm(25, 10,1)

 ggplot(df, aes(x=date))+ 
 geom_line(data=df, aes(y=var1, color="red"), size=1)+
 theme(legend.position="")+ 
 facet_wrap(facets = ~cate, scale="free_y") +
 theme(
         axis.text.x = element_text(
         angle = 45, face = "bold", hjust = 0.85, 
         color="black", size=11))

 ggplot(df, aes(x=date))+ 
 geom_line(data=df, aes(y=var2), size=1, color="blue")+
 theme(legend.position="")+ 
 facet_wrap(facets = ~cate, scale="free_y") +
 theme(
         axis.text.x = element_text(
         angle = 45, face = "bold", hjust = 0.85, 
         color="black", size=11))

How overlay?

我尝试使用第二个轴覆盖两个图形。我使用 facet 使用了一个免费的 Y 比例尺。遗憾的是,我的第一个轴(左侧)无法正确显示数据或变化,因为这个问题(左侧的限制不好)。

我对第二个轴进行了一些调整(相乘)以获得正确的比例。为此,我从 var1 和 var2 中获得了最大值,根据:

https://whatalnk.github.io/r-tips/ggplot2-secondary-y-axis.nb.html

summary(df)

      var1                var2        cate        date           
 Min.   :    7.642   Min.   : 6.962   A:25   Min.   :2002-01-01  
 1st Qu.:11227.279   1st Qu.: 9.170   B:25   1st Qu.:2004-01-24  
 Median :14994.614   Median : 9.965   C:25   Median :2006-02-15  
 Mean   :11254.102   Mean   : 9.888   D:25   Mean   :2006-02-14  
 3rd Qu.:15008.424   3rd Qu.:10.579          3rd Qu.:2008-03-08  
 Max.   :15035.587   Max.   :12.367          Max.   :2010-04-01  
> 


 ggplot(df, aes(x=date))+ 
 geom_line(data=df, aes(y=var1, color="blue"), size=1)+
 geom_line(data=df, aes(y=var2*15035/12.367, color="red"), size=1) +
 theme(legend.position="")+ 
 facet_wrap(facets = ~cate, scale="free_y") +
 theme(
         axis.text.x = element_text(
         angle = 45, face = "bold", hjust = 0.85, 
         color="black", size=11))+
 scale_y_continuous(
    sec.axis = sec_axis(~ .*12.367/15035, name="var2"))

example

**编辑:**

如果我不乘,我会得到这个:

 ggplot(df, aes(x=date))+ 
 geom_line(data=df, aes(y=var1, color="blue"), size=1)+
 geom_line(data=df, aes(y=var2, color="red"), size=1) +
 theme(legend.position="")+ 
 facet_wrap(facets = ~cate, scale="free_y") +
 theme(
         axis.text.x = element_text(
         angle = 45, face = "bold", hjust = 0.85, 
         color="black", size=11))+
 scale_y_continuous(
    sec.axis = sec_axis(~ ., name="var2"))

Not multiply

0 个答案:

没有答案