1

この質問の ggplotを使用したソリューションは、私のデータに対して非常にうまく機能しました。ただし、凡例を追加しようとしていますが、試したすべてが機能しません...

たとえば、上記の質問の ggplot の例では、赤い曲線が「海」に関連し、緑の曲線が「土壌」に関連していることを示す凡例を追加するにはどうすればよいですか? はい、私が定義するテキストを追加したいのですが、それは私の data.frame 内の他の変数に関連していません。

以下の例は、私自身のデータの一部です...

Rate     Probability      Stats
1.0e-04    1e-04          891.15 
1.0e-05    1e-04          690
...

など(約400行)。そして、上記のような 2 つのデータ フレームがあります。だから私のコードは

g <- ggplot(Master1MY, aes(Probability))
g <- g + geom_point(aes(y=Master1MY$Stats), colour="red", size=1)
g <- g + geom_point(aes(y=Transposon1MY$Stats), colour="blue", size=1)
g + labs(title= "10,000bp and 1MY", x = "Probability", y = "Stats")

プロットは次のようになりますこれ

「マスター」と「トランスポゾン」という赤と青のレジェンドが欲しいだけ

ありがとう!

4

1 に答える 1

5

一般にggplot、データを「長い」形式で保持するのが最も便利です。meltここでは、パッケージの関数を使用してreshape2、データをワイド フォーマットからロング フォーマットに変換します。さまざまな属性 (サイズ、形状、色など) を指定する方法に応じてaes、対応する凡例が表示されます。

library(ggplot2)
library(reshape2)

# data from the example you were referring to, in a 'wide' format.
x  <- seq(-2, 2, 0.05)
ocean <- pnorm(x)
soil <- pnorm(x, 1, 1)
df <- data.frame(x, ocean, soil)

# melt the data to a long format
df2 <- melt(data = df, id.vars = "x")

# plot, using the aesthetics argument 'colour'
ggplot(data = df2, aes(x = x, y = value, colour = variable)) + geom_line()

ここに画像の説明を入力

凡例の編集、名前とラベルの設定

# Manually set name of the colour scale and labels for the different colours
ggplot(data = df2, aes(x = x, y = value, colour = variable)) +
 geom_line() +
 scale_colour_discrete(name = "Type of sample", labels = c("Sea water", "Soil"))

Edit2、次の新しいサンプル データ更新からの構成を想定して 、データを長い形式に変換します。繰り返しますggplotが、データを長い形式で保持すると、作業が楽になると思います。すべてのステップを、最初の回答で使用した簡単なサンプル データと関連付けます。データを再配置する方法は他にもたくさんあることに注意してください。これは、更新で提供されたデータの小さな (再現不可能な) 部分に基づく 1 つの方法です。

# x  <- seq(-2, 2, 0.05)
# Master1MY$Probability
Probability <- 1:100

# ocean <- pnorm(x)
# Master1MY$Stats
Master1MY <- rnorm(100, mean = 600, sd = 20)

# soil <- pnorm(x,1,1)
# Transposon1MY$Stats
Transposon1MY <- rnorm(100, mean = 100, sd = 10)

# df <- data.frame(x, ocean, soil)
df <- data.frame(Probability, Master1MY, Transposon1MY)

# df2 <- melt(df, id.var = "x")
df2 <- melt(df, id.var = "Probability")

# default
ggplot(data = df2, aes(x = Probability, y = value, col = variable)) +
  geom_point()

# change legend name and labels, see previous edit using 'scale_colour_discrete'

# set manual colours scale using 'scale_colour_manual'.

ggplot(data = df2, aes(x = Probability, y = value, col = variable)) +
  geom_point() +
  scale_colour_manual(values = c("red","blue"), name = "Type of sample", labels = c("Master", "Transposon"))

ここに画像の説明を入力

于 2013-09-26T21:08:19.433 に答える