1. ホーム
  2. r

[解決済み] ggplotにテキストを追加する

2022-03-01 06:12:02

質問

(更新) このようなggplotがあるのですが、X軸のDateがスケーリングされてしまいます。

g1 <- ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar()

2つのバーの上(例えば VS2IF 高さ13.000の棒グラフの上にテキストラベルを貼りたいのですが、どうすればいいですか?

いろいろ試しましたが、これが一番近かったです。 これは、私のグラフで日付軸で試したものです。 g1 + geom_text(aes(as.Date("2014-10-05"), 13000), label="boat")

しかし、これではグラフに1つしか追加されず、たとえば

g1 + geom_text(aes(c(as.Date("2014-10-05"),as.Date("2014-10-20")) , 13000), label=c("boat", "train"))

を実行すると、エラーが発生します。

エラーです。美学は長さ1であるか、または美学と同じ長さでなければなりません。 dataProblems:c(as.Date("2014-10-05"), as.Date("2014-10-20"))

また、データフレームからテキストとラベルを読み込もうとしたのですが、( oefen ) で、元のプロットと同じ名前を使用しました。

g1 + geom_text(data=oefen, aes(x=newdat, y=Number, label=oefen$labs, fill=1))

エラーが表示される

エラーです。離散的なスケールに連続的な値が供給されました

他にもいろいろと試してみたのですが、答えが見つかりません。何が足りないのでしょうか?

解決方法を教えてください。

を使用することを検討します。 annotate() を使えば、プロット上の任意の位置に好きなテキストを配置することができます。 X軸の明度因子のような因子変数は、各レベルに数字を持っているので、その数字を使ってテキストを配置することができます。 日付変数も同じような使い方ができると思うのですが...。

ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar() +
  annotate("text", x=8, y=13000, label= "boat") + 
  annotate("text", x = 4, y=13000, label = "ship")

<イグ

COMMENTの後にEDIT

効率化のために、次のようにアノテーションを組み合わせることができます。

ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar() +
  annotate("text", x = c(2,4,6,8), y=13000, label = c("two", "ship", "six", "boat"))