web-dev-qa-db-ja.com

ggplotにテキストを追加

(更新)このようなggplotがありますが、x軸の日付がスケーリングされます:

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

2つ以上のバーの上(VS2とIFと言いますが、私のグラフでは日付です)、13.000の高さのバーの上にテキストラベルを配置します。

私は多くのことを試しましたが、これが最も近いものです:これは、グラフで日付軸g1 + geom_text(aes(as.Date( "2014-10-05")、13000)、label = "ボート")

しかし、これはグラフに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))

エラーが表示されます

エラー:離散スケールに供給された連続値

他の多くの解決策を試しましたが、答えが見つかりません。私は何が欠けていますか?

25
Rosanne

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")

enter image description here

コメントの後に編集

効率を上げるために、次のような注釈を組み合わせることができます。

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