web-dev-qa-db-ja.com

ggplot2の凡例のキーラベルを手動で変更する方法

出版用のプロットを準備しています。積み上げボックスプロットを作成して、セロネガティブではなくセロネガティブの複雑な蓄積があった各グループの患者の頻度を示しました。凡例では、プロジェクトに取り組んでいるが公開には適さないデータフレームのラベルを使用しています。読者がすぐに理解できる名前に名前を変更したい。

したがって、たとえば次のスクリプトを実行します

grp <- gl(n=4,k=20,labels=c("group a","group b","group c", "group d"))
value <- runif(n=80, min=10, max=150)
outcome <- cut(value,2)
data <- data.frame(grp,value,outcome)
ggplot(data, aes(grp, fill=outcome)) + geom_bar() +xlab("group") 
             +ylab("number of subjects") + labs(fill="Serologic response")

そのコードは、公開に適さないキーラベル「(10.4,80]」および「(80,150]」を作成します。

データフレームに戻って変換し、正しいラベルが付けられた新しい変数を取得できると思います。 または、単に因子にラベルを付け直すことができます ?しかし、私はプロット時にそれを行うことを好むでしょう。

37
Farrel

標準的な方法は、スケール関数を使用して、グループの表示ラベルを変更することです。 ggplot呼び出しを次のように置き換えることができます

ggplot(data, aes(grp, fill=outcome)) + geom_bar() +xlab("group") +
  ylab("number of subjects") + 
  scale_fill_discrete("Serologic response", 
                      breaks=c("(10.1,79.9]","(79.9,150]"), 
                      labels=c("double negative", "positive for a and/or b"))

スケールのタイトルがscale_fill_discrete呼び出しに組み込まれていることに注意してください。必要に応じて、軸でもこれを行うことができます

ggplot(data, aes(grp, fill=outcome)) + geom_bar() +
  scale_x_discrete("group") +
  scale_y_continuous("number of subjects") + 
  scale_fill_discrete("Serologic response", 
                      breaks=c("(10.1,79.9]","(79.9,150]"), 
                      labels=c("double negative", "positive for a and/or b"))
38
Brian Diggs

ハイブリッドな方法を見つけました。ファクターのラベルは変更されますが、データフレームで変更する必要はありません。代わりに、ggplotコマンドで実行します。

ggplot(data, aes(grp, fill=factor(outcome,labels=c("low","high")))) + 
  geom_bar() +xlab("group") +ylab("number of subjects") +
   labs(fill="Serologic response")

他の方法はありますか?

24
Farrel