web-dev-qa-db-ja.com

Ggplotで凡例のタイトルを変更する方法

以下のようなプロットがあります。それはこのコマンドで作成されました:

library(ggplot2)

df <- data.frame(cond = factor(rep(c("A", "B"), each = 200)), 
                 rating = c(rnorm(200), rnorm(200, mean=.8)))

ggplot(df, aes(x=rating, fill=cond)) + 
geom_density(alpha = .3) +
xlab("NEW RATING TITLE") +
ylab("NEW DENSITY TITLE")

次に私がやりたいことは 凡例のタイトル から cond に変更することです LEGEND TITLE - /。

それで私がしたのは単に次の行を追加して上記のコードの最後を追加することです:

+labs(colour="NEW LEGEND TITLE")

しかし、うまくいきません。それをする正しい方法は何ですか?

enter image description here

225
neversaint

これはうまくいくはずです。

p <- ggplot(df, aes(x=rating, fill=cond)) + 
           geom_density(alpha=.3) + 
           xlab("NEW RATING TITLE") + 
           ylab("NEW DENSITY TITLE")
p <- p + guides(fill=guide_legend(title="New Legend Title"))

(あるいは)

p + scale_fill_discrete(name = "New Legend Title")
287
Arun

あまり詳しく説明しませんでしたが、ggplot()で fill = cond を使用したため、

 + labs(color='NEW LEGEND TITLE') 

うまくいかなかったかもしれません。しかし、 color fill に置き換えても動作します。

+ labs(fill='NEW LEGEND TITLE') 

これは私にとってggplot2_2.1.0でうまくいきました

152
Rohan Sadale

あなたは2つの濃度を持っているので、私はあなたがscale_fill_manualであなた自身の色を設定したいと思うかもしれないと想像します。

もしそうならあなたはできる:

df <- data.frame(x=1:10,group=c(rep("a",5),rep("b",5)))

legend_title <- "OMG My Title"

ggplot(df, aes(x=x, fill=group)) + geom_density(alpha=.3) +   
    scale_fill_manual(legend_title,values=c("orange","red"))

enter image description here

36
user1317221_G

上記のコードのどれも私のために働きませんでした。

これが私が見つけたもので、うまくいった。

labs(color = "sale year")

末尾に\nを追加して、タイトルと表示の間にスペースを入れることもできます。

labs(color = 'sale year\n")

13
Rohit Yadav

コードではggplot(data, fill= cond)を使用してヒストグラムを作成しているので、ラベルセクションに "fill"、つまり+labs(fill="Title name")を使用して凡例のタイトルを追加する必要があります。コードがggplot(data、color = cond)である別の種類のプロットを使用していた場合は、+labs(colour= "Title Name")を使用できます。要約すると、lab引数はaes引数と一致しなければなりません。

Geom_barプロットの凡例のタイトルを変更するために+ guides(fill=guide_legend("my awesome title"))を使いましたが、geom_pointにはうまくいきませんでした。

12
kulianne

いくつかの単純なグラフで機能することができるもう1つの非常に単純な答えがあります。

グラフにguide_legend()の呼び出しを追加するだけです。

ggplot(...) + ... + guide_legend(title="my awesome title")

とても素敵な ggplotのドキュメントに示されているように

それでもうまくいかない場合は、 ガイド を呼び出してガイドパラメータをより正確に設定できます。

ggplot(...) + ... + guides(fill=guide_legend("my awesome title"))

guidesの呼び出しにもこれらのパラメータを指定することで、形/色/サイズを変えることができます。

5
Yourpalal

リストに追加するためだけに(ここで他のオプションは私にはうまくいきませんでした)、ggplotのために関数update_labelsを使うこともできます:

p <- ggplot(df, aes(x=rating, fill=cond)) + geom_density(alpha=.3) + xlab("NEW RATING TITLE") + ylab("NEW DENSITY TITLE")

update_labels(p, list(colour="MY NEW LEGEND TITLE")

これにより、x軸とy軸のラベルを別々の行で変更することもできます。

update_labels(p, list(x="NEW X LABEL",y="NEW Y LABEL")
2
user3791304

私はggplotでfacet_wrapを使用していますが、ArnaudAの解決策を除いて、提案された解決策はどれも私にとってはうまくいきませんでした。

qplot(…) + guides(color=guide_legend(title="sale year")) 
1
Birdonawire

スペース、" "を含むRにテーブルをロードすることが可能であることを知らないので、多くの人々はラベル、凡例ラベル、タイトルと軸の名前を変えるのに多くの時間を費やします。ただし、これを行うと、たとえばタブで区切られたテーブル(またはデフォルト以外の区切り文字や単一のスペース)を読み込むときに区切り記号を指定して、時間を節約したりコードのサイズを縮小したりできます。

read.table(sep = '\t')

またはcsv形式のデフォルトの読み込みパラメータを使用して:

read.csv()

つまり、すべてのプロットで新しい凡例のタイトルを指定しなくても済むように、元のデータファイルの列名(ヘッダー)として"NEW LEGEND TITLE"という名前を直接保持できます。

0
Nakx