2

ラティス グラフィックスを使用して棒グラフにデータをプロットしようとしています。バーをある要因でソートし、別の要因でグループ化したいと思います (つまり、最初の要因で位置を決め、2 番目の要因で位置内を対比します)。ただし、最初の (つまり、位置) 要因によってバーに色を付けたいと思います。

次の例では、プロットは赤と青のバーのペアでレンダリングされます。代わりに、隣接する 2 つの赤いバー、隣接する 2 つの青いバー、および隣接する 2 つの緑のバーが必要です。

library(lattice)

data = runif( 6 )
facA = rep( c( "a", "b", "c" ), each = 2 )
facB = rep( c( "1", "2" ), 3 )
df = data.frame( "FactorA" = facA, "FactorB" = facB, "Data" = data )
df$FactorA = = as.factor( FactorA )
df$FactorB = = as.factor( FactorB )
test_colors = c( "red", "blue", "green" )
test_plot = barchart(FactorA ~ Data, groups = FactorB, data = df, 
                     horizontal = TRUE, col = test_colors, origin = 0 )
plot( test_plot )

前もって感謝します!

4

2 に答える 2

2

これは完璧ではありませんが、うまくいくと思います(あなたの質問を正しく理解していれば)。

barchart( FactorB ~ Data | FactorA, data = df, groups=FactorA, 
          horizontal = TRUE, col = test_colors, origin = 0,  layout=c(1,3))

Factor B ~ Data | FactorAは、これらの各グループに対応するパネルFactorA内でデータを分割し、 に従って分割することを意味しますFactorB。色は、 として定義されたものに従いますgroups

ここに画像の説明を入力

于 2013-01-28T15:53:46.923 に答える
0

「ggplot2」でこれを行いたい場合は、次のように記述します。

ggplot(df, aes(x=FactorA, y=data, group=FactorB, fill=FactorA)) +
geom_bar(stat="identity", position="dodge") + 
coord_flip()

そこからは、塗りつぶしの色を選ぶなど、好みに合わせて化粧品を仕立てるだけです。

于 2013-01-28T18:35:37.263 に答える