2017-01-13 28 views
2

facet_gridを使用しているときにggplot2 boxplotのxラベルを個別に変更したい。私は、次の簡単な例を作った:個別にggplot2で式を使ってxラベルを変更する場合facet_gridを使ってboxplotをR

library(ggplot2) 

data1 <- InsectSprays 
data1$group <- "group 1" 
data2 <- InsectSprays 
data2$group <- "group 2" 

plotData <- rbind(data1, data2) 

ggplot(plotData, aes(x=spray, y=count, fill=spray))+ 
guides(fill=FALSE) + 
facet_grid(. ~ group) + 
geom_boxplot() 

enter image description here

私はなく、個別に二つのグループのために、x軸(A、B、C、...)のラベルを変更したいです。

scale_x_discrete(labels=c("label 1", "label 2", ...)) 

しかし、これにより、両方のグループのラベルが同じ値に変更されます。最後に、ラベルの式を使用できるようにする必要もあります。私が欲しいものを達成する方法はありますか?

EDIT:

私の問題(感謝@Axeman)を解決するために非常に単純な方法があります。使用する:

​​

私はラベルを変更することができます。私の例では、これは両方のグループを変更しますが、私にとっては、ラベルを個々のラベルに名前を変更してから、このトリックを使用してラベルの式を使用することができます。

答えて

2
plotData$x <- interaction(plotData$spray, plotData$group) 
plotData$x <- factor(plotData$x, labels = paste('labels', 1:12)) 

ggplot(plotData, aes(x=x, y=count, fill=spray))+ 
    geom_boxplot(show.legend = FALSE) + 
    facet_grid(. ~ group, scales = 'free') 

enter image description here

私は仕事に次を期待しているだろうが、それはしません!

ggplot(plotData, aes(x=interaction(spray, group), y=count, fill=spray))+ 
    geom_boxplot(show.legend = FALSE) + 
    facet_grid(. ~ group, scales = 'free') + 
    scale_x_discrete(labels = paste('labels', 1:12)) 
+0

これは少なくとも私の問題を部分的に解決します。これで式を使用することは可能ですか?私は単純な '式(ベータ)'を1つのラベルとして使ってみましたが、ギリシャのシンボルベータではなく "ベータ"としてしか表示されません。データが要素に変換されるという事実と関係していると思いますか? –

+1

私は 'scale_x_discrete(labels = c( 'label 1' = expression(beta))')はうまくいくと思っていましたが、そうではありません。 'scale_x_discrete(labels = c(expression(beta)))'は動作しますが、一方のファセットを置き換えます。これについては不明ですが、バグですか? – Axeman

+1

うわー、それは私のために働いた!私は 'c( 'label 1' = expression(beta))'を使って1つのラベルしか変更できないことを知りませんでしたが、それはまったく問題なく動作します。私のプロットデータでは、ラベルを元のデータセットの個々の値に変更し、必要な部分を式で置き換えることができます。どうもありがとうございました! –

関連する問題