1. ホーム
  2. r

[解決済み] R ggplot2 scale_y_continuous : ブレークとリミットを組み合わせる

2022-01-28 18:20:31

質問

問題点 : のbreakコマンドとlimitsコマンドを組み合わせる方法が見つかりません。 ggplot2 . Y軸は常に0-40の範囲を含む必要があり breaks=c(5,10,15,20,25,30,35) . x軸は0-100とする。 breaks=c(10,20,30,40,50,60,70,80,90,100) . この範囲外のデータは表示したくない。

試しに + ylim しかし、これでは改行が上書きされてしまいます。 私は + expand しかし、これも私が欲しい範囲(1-100)外のデータを表示します。 2番目のステップでブレークを追加して範囲を限定しようとしましたが、そうすると1番目のステップのY軸が単純に上書きされてしまいます。

plot_Tili_Age_VS_Height <- ggplot(Tili, aes(x = Age, y = Height)) + geom_point() + 
  geom_smooth(method = "lm", se = FALSE, color = "black", formula = y ~ x) + 
  scale_y_continuous(trans = "log10", breaks = c(5, 10, 15, 20, 25, 30, 35)) + 
  expand_limits(y = c(0, 35), x = c(0, 100)) + 
  scale_x_continuous(trans = "log10", breaks = c(10, 20, 30, 40, 50, 60,70, 80, 90, 100)) +
  theme_bw(base_size = 15) + 
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())

df <- data.frame(x = log(Tili$Age), y = log(Tili$Height))
lm_eqn = function(df) {
  m = lm(y ~ x, df)
  eq <- substitute(ln(italic(y)) == a + b %*% ln(italic(x)) * "," ~ ~italic(r)^2 ~ 
                     "=" ~ r2, list(a = format(coef(m)[1], digits = 2), 
                                    b = format(coef(m)[2], digits = 2), 
                                    r2 = format(summary(m)$r.squared, digits = 2)))
  as.character(as.expression(eq))
}

plot_Tili_Age_VS_Height <- plot_Tili_Age_VS_Height + 
  annotate("text", x = 30, y = 5, label = lm_eqn(df), hjust = 0, 
           size = 3, family = "Times", parse = TRUE)
plot_Tili_Age_VS_Height 

どうすれば直るのでしょうか?

解決方法は?

JasonAizkalnsのコメントにあるように、再現性のある例がないと、あなたの問題は解決できません。以下のコードは、虹彩のデータに対してあなたが望むことを行うもので、あなたの例でも同様に動作するはずです。

library(ggplot2)

df <- iris


## all data, default breaks
ggplot(df, aes(Sepal.Length, Sepal.Width)) +
  geom_point()

## subset of data is seen in plot, breaks changed
ggplot(df, aes(Sepal.Length, Sepal.Width)) +
  geom_point() + 
  scale_x_continuous(breaks = c(5.5,6.5), limits = c(5,7)) +
  scale_y_continuous(breaks = c(3.5,2.5), limits = c(2,4))