1. ホーム
  2. r

ggplot2 の凡例表示順序を制御する

2023-07-28 06:15:13

質問

ggplot2で凡例の順序を制御する方法を知っている人はいますか?

私が見ることができるものから、順序はスケール宣言の順序ではなく、実際のスケールラベルに関連しているようです。スケールタイトルを変更すると、順序が変更されます。これを強調するために、diamondデータセットを使用して、小さな例を作りました。私は、ggplot2を一連のプロットに使用しようとしています。そして、ある変数をすべてのプロットで右側に表示させたいと思います。しかし、現時点では、これはいくつかのプロットで発生するだけであり、適切なスケールラベルを保持しながら、私の希望する順序を強制する方法については途方に暮れています。

library(ggplot2)
diamond.data <- diamonds[sample(nrow(diamonds), 1000), ]
plot <- ggplot(diamond.data, aes(carat, price, colour = clarity, shape = cut)) +
  geom_point() + opts(legend.position = "top", legend.box = "horizontal")
plot # the legend will appear shape then colour 
plot + labs(colour = "A", shape = "B") # legend will be colour then shape
plot + labs(colour = "Clarity", shape = "Cut") # legend will be shape then colour

どのように解決するのですか?

0.9.1では、凡例の順番を決定するルールは 秘密 であり 予測不可能な . githubにある開発版0.9.2では、凡例の順番を設定するためのパラメータを使用できるようになりました。

以下はその例です。

plot <- ggplot(diamond.data, aes(carat, price, colour = clarity, shape = cut)) +
  geom_point() + opts(legend.position = "top")

plot + guides(colour = guide_legend(order = 1), 
              shape = guide_legend(order = 2))

<イグ

plot + guides(colour = guide_legend(order = 2), 
              shape = guide_legend(order = 1))

<イグ