3

ggplot で凡例の色を指定する際に 2 つの異なる問題があります。私の問題を示す簡単な例を作成しようとしました:

df <- data.frame(x=rep(1:9, 10), y=as.vector(t(aaply(1:10, 1, .fun=function(x){x:(x+8)}))), method=factor(rep(1:9, each=10)), DE=factor(rep(1:9, each=10)))
ggplot(df, aes(x, y, color=method, group=DE, linetype=DE)) + geom_smooth(stat="identity")

何らかの理由で、タイトル DE の下の凡例に示されている線種はすべて青色です。黒にしたいのですが、そもそもなぜ青なのかわからないので、どう変えればいいのかわかりません。

私の他の問題では、ポイントの色とポイントの形状の両方を使用して、データ内の 2 つの異なる区別を示そうとしています。この二つに伝説を残したい。ここに私が持っているものがあります:

classifiers <- c("KNN", "RF", "NB", "LR", "Tree")
des <- c("Uniform", "Gaussian", "KDE")

withoutDE <- c(.735, .710, .706, .628, .614, .720, .713, .532, .523, .557, .677, .641, .398, .507, .538)
withDE <- c(.769, .762, .758, .702, .707, .752, .745, .655, .721, .733, .775, .772, .749, .756, .759)

df <- data.frame(WithoutDE=withoutDE, WithDE=withDE, DE=rep(des, each=5), Classifier=rep(classifiers, 3))
df <- cbind(df, Method=paste(df$DE, df$Classifier, sep=""))

ggplot() + geom_point(data=df, aes(x=WithoutDE, y=WithDE, shape=Classifier, fill=DE), size=3) + ylim(0,1) + xlim(0,1) + xlab("AUC without DE") + ylab("AUC with DE") + scale_shape_manual(values=21:25) + scale_fill_manual(values=c("pink", "blue", "white"), labels=c("Uniform", "KDE", "Gaussian")) + theme(legend.position=c(.85,.3))

塗りつぶしだけでなく色を変更する場合 (color=DE を aes に入れることによって)、それらは凡例に表示されます。ただし、ポイントの周りに黒い境界線があるのは好きです。凡例のポイントの内側に、プロットのポイント塗りつぶしを反映させたいだけです。(2 つの凡例を並べて配置したいのですが、今は色を機能させたいだけです)

私はこれらの問題の両方についてあまりにも長い間グーグルで検索し、さまざまな解決策を試してきましたが、成功しませんでした。誰かが私が間違っていることを知っていますか?

4

1 に答える 1

8

質問 1 の場合:

線種の凡例と色の凡例に同じ名前を付けます。

ggplot(df, aes(x, y, color=method, group=DE, linetype=DE)) + 
  geom_smooth(stat="identity") +
  scale_color_discrete("Line") +
  scale_linetype_discrete("Line")

質問 2 の場合:

塗りつぶしがデータと一致しているとは思いません。呼び出しの各色に値の名前を割り当てる必要がありscale_x_manualます。

ポイントの黒枠が取れませんでした。しかし、ここに私が得ることができたものがあります:

ggplot() + 
  geom_point(data=df, aes(x=WithoutDE, y=WithDE, shape=Classifier, 
                          fill=DE, colour=DE), size=3) + 
  ylim(0,1) + xlim(0,1) + 
  xlab("AUC without DE") + 
  ylab("AUC with DE") + 
  scale_shape_manual(values=21:25) + 
  scale_fill_manual(values=c("Uniform"="pink", "KDE"="blue", "Gaussian"="white"), 
                    guide="none") +
  scale_colour_manual(values=c("Uniform"="pink", "KDE"="blue", "Gaussian"="white"), 
                      labels=c("Uniform", "KDE", "Gaussian")) +
  theme(legend.position=c(.85,.3))

凡例内のポイント タイプを制御できるかどうかはわかりません。たぶん、より多くの知識を持っている他の誰かがそれを理解ggplot2できるでしょう。

于 2013-10-12T06:09:44.620 に答える