残りの軸やグリッド線を変更せずに、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