R、ggplot2: 他のグリッド線を変更せずに、特定の目盛りとラベルを軸に追加します。

okwaves2024-01-24  4

残りの軸やグリッド線を変更せずに、ggplot2 を使用して特定の目盛りとラベルを軸に追加しようとしています。

次のようなプロットがあるとします。

library(ggplot2)

d <- data.frame(x = c(0:100), y = c(0:100))

plot <- ggplot(d, aes(x = x, y = y)) + geom_point()
plot

私がやりたいのは、y 軸に特定の目盛りと値を追加して、ある種のカットオフ ポイントを示すことです。実際の実装では、このカットオフとデータは関数に渡される引数をプロットするためのものであるため、値をハードコーディングせずにこれを実行したいと考えています。

ここで、特定の目盛りとラベルを軸に追加する解決策を見つけました。これは正しく機能します。この場合、y = 10 に追加したいとします。ただし、これを試してみると、グリッド線も変わります。

plot + scale_y_continuous(breaks = c(pretty(d$y), 10),
                          labels = c(pretty(d$y), 10))

現在、25 単位ごとに主グリッド線と副グリッド線が存在するのではなく、s は 12.5 単位ごとでしたが、現在は主グリッド線が 20 単位ごと、副グリッド線が 10 単位ごとにあります。さらに、何らかの不可解な理由により、余分な副グリッド線が y = 55 に追加されています。

y = 10 に目盛り + ラベルを追加し、それ以外の場合は y 軸を最初のプロットのようにする方法はありますか?理想的には、この解決策では、y 軸を設定するときにも n.breaks 引数を使用できるようになり、ある程度の数のブレークをリクエストし、それに追加のブレークを追加できるようになります。

1

特別な理由別個の geom_hline(yintercept = <whatever Ideal value>) + 注釈付きラベルではなく、プロットのグリッドの一部として参照線を使用したいですか?

– Z.リン

2020 年 9 月 3 日 3:52



------------------------

作成したメソッドを使用するには、minor.breaks も指定する必要があります。

plot + scale_y_continuous(breaks = c(pretty(d$y), 10),
                          labels = c(pretty(d$y), 10), 
                          minor_breaks = pretty(d$y, n = 2*length(pretty(d$y))))

2

これにより、余分な補助グリッド線の問題が修正されます。y = 55 ですが、副グリッド線の間隔は 10 単位ごとに、主グリッド線の間隔は 20 単位ごとに変更されます。これを実行したいのですが、以前と同じマイナー/メジャー グリッドラインを維持します (つまり、マイナーは 12.5 ごと、メジャーは 25 ごと)。それを行う方法はありますか?

– ジグソー

2020 年 9 月 3 日 11:27

気にしないでください、私はそれを思いついただけです! y_breaks <- c(ggplot_build(plot)$layout$panel_params[[1]]$y$get_breaks(), 10); を実行します。 y_labels <- y_breaks; y_minor_breaks <- ggplot_build(plot)$layout$panel_params[[1]]$y$get_breaks_minor();プロット + スケール y_continuous(ブレーク = y_breaks、ラベル = y_labels、minor_breaks = y_minor_breaks

– ジグソー

2020 年 9 月 3 日 11:39



------------------------

Z.Lin が提案したように、通常はカットオフ ポイントを h ラインとして指定する方がはるかに簡単で明確です。軸上にあるとしても、望ましい効果を得るにはおそらく hline が必要になるでしょう。

library(ggplot2)

d <- data.frame(x = c(0:100), y = c(0:100))

plot <- ggplot(d, aes(x = x, y = y)) + geom_point()
plot

plot +
  geom_hline(yintercept = 10, linetype = "dotdash", size = 0.9, alpha = 0.5)+
  annotate(geom = "text",x = 80, y = 14, label = "Cut-off point", fontface = 'italic')
共有 フォローする

2020 年 9 月 3 日 5:25 に回答

ジョナソン P

ジョナソン P

5

1

銅バッジ 1 個

1

申し訳ありませんが、hline も追加するように指定する必要がありましたが、難しいことではありませんでした。問題は、プロットに注釈を付けるのではなく、注釈 ov のリスクを負いたくないので、カットオフの値を軸ラベルとしてマークしたいことでした。データポイントと重なっています。おもちゃの例には含まれていませんが、任意のデータセットが与えられている可能性があります。

– ジグソー

2020 年 9 月 3 日 11:23

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。