ggplotでの凡例(テキスト)ラベルの編集


120

ドキュメントとStackOverflowを調べて何時間も費やしましたが、問題が解決するような解決策はないようです。使用するggplotと、データフレームにあるのに、凡例に正しいテキストが表示されません。私が試してみましたscale_colour_manualscale_fill_manualのために異なる値でlabels=などc("T999", "T888")", "cols"

これが私のコードです:

T999 <- runif(10, 100, 200)
T888 <- runif(10, 200, 300)
TY <- runif(10, 20, 30)
df <- data.frame(T999, T888, TY)


ggplot(data = df, aes(x=T999, y=TY, pointtype="T999")) + 
       geom_point(size = 15, colour = "darkblue") + 
       geom_point(data = df, aes(x=T888, y=TY), colour = 'red', size = 10 ) + 
       theme(axis.text.x = element_text(size = 20), axis.title.x =element_text(size = 20),   axis.text.y = element_text(size = 20)) +
       xlab("Txxx") + ylab("TY [°C]") + labs(title="temperatures", size = 15) + 
       scale_colour_manual(labels = c("T999", "T888"), values = c("darkblue", "red")) +    theme(legend.position="topright")

助けていただければ幸いです!


8
見て、このチュートリアル形式はどのデータを見つけるためにggplot(長く、広くない)と最も満足している、との違いのために感覚を得るためにマッピングaes内の変数にtheticをaes対、コール設定の外にそれをaes。あなたはする必要がありmelt、長い形式にデータ、およびマップcolour(またはfillに)aes関連する変数へ。
Henrik

回答:


145

@Henrikが言及したチュートリアルは、ggplot2パッケージを使用してプロットを作成する方法を学ぶための優れたリソースです。

データの例:

# transforming the data from wide to long
library(reshape2)
dfm <- melt(df, id = "TY")

# creating a scatterplot
ggplot(data = dfm, aes(x = TY, y = value, color = variable)) + 
  geom_point(size=5) +
  labs(title = "Temperatures\n", x = "TY [°C]", y = "Txxx", color = "Legend Title\n") +
  scale_color_manual(labels = c("T999", "T888"), values = c("blue", "red")) +
  theme_bw() +
  theme(axis.text.x = element_text(size = 14), axis.title.x = element_text(size = 16),
        axis.text.y = element_text(size = 14), axis.title.y = element_text(size = 16),
        plot.title = element_text(size = 20, face = "bold", color = "darkgreen"))

この結果は:

ここに画像の説明を入力してください

コメントの@ user2739472で述べられているように:ggplotのデフォルトパレットの色ではなく、凡例のテキストラベルのみを変更したい場合は、のscale_color_hue(labels = c("T999", "T888"))代わりに使用できますscale_color_manual()


@Sathishご覧のとおり、y軸のタイトルはx軸のタイトルよりも小さくなっています。さまざまなサイズを使用して、可能性とその結果を示します。したがって、答えで使用されるコードは正しいimoです。
Jaap

@Sathish私の以前のコメントに追加:それは確かにそのようにすることのオプションです!それはすべて、達成したいことによって異なります;-)
Jaap

9
凡例のテキストラベルのみを変更し、ggplotのデフォルトパレットの色は変更しない場合は、scale_color_hue(labels = c("T999", "T888"))代わりに使用できます。scale_color_manual()
user2739472

1
@ user2739472 Thx&true。それを私の答えに追加します。
Jaap 2016年

@Sathish私は少し遅れましたが、タイプミスを修正しました:-)
Jaap

41

凡例のタイトルは、特定の美学によってラベルを付けることができます。

これはguides()またはのlabs()関数を使用して実現できますggplot2(詳細はこちらこちら)。美的マッピングを使用してガイド/凡例のプロパティを追加できます。

以下は、mtcarsデータセットとlabs():を使用した例です。

ggplot(mtcars, aes(x=mpg, y=disp, size=hp, col=as.factor(cyl), shape=as.factor(gear))) +
  geom_point() +
  labs(x="miles per gallon", y="displacement", size="horsepower", 
       col="# of cylinders", shape="# of gears")

ここに画像の説明を入力してください

OPの質問への回答guides()

# transforming the data from wide to long
require(reshape2)
dfm <- melt(df, id="TY")

# creating a scatterplot
ggplot(data = dfm, aes(x=TY, y=value, color=variable)) + 
  geom_point(size=5) +
  labs(title="Temperatures\n", x="TY [°C]", y="Txxx") +
  scale_color_manual(labels = c("T999", "T888"), values = c("blue", "red")) +
  theme_bw() +
  guides(color=guide_legend("my title"))  # add guide properties by aesthetic

ここに画像の説明を入力してください


私はそれに同意しません。タイトルのみを指定する場合は、scale_ ..or labs引数で指定する方が簡単です。
Jaap

タイトルをに追加した15分前のソリューションについてコメントしましたscale_color_manual(title="...", ...)。で色の美学を参照するように変更したようlabs()です。代替案としてソリューションを提供します。
メガトロン

現時点では、これが凡例を塗りつぶしのグラデーションである場合、より無意味なものに変更しているようです。
Max Candocia 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.