8

次のデータフレームから作業します。

    > foo
        species density day percent  
    1  species1    high   1    0.40  
    2  species1     low   1    0.20  
    3  species1  medium   1    0.40  
    4  species2    high   1    0.35  
    5  species2     low   1    0.10  
    6  species2  medium   1    0.55  
    7  species3    high   1    0.35  
    8  species3     low   1    0.20  
    9  species3  medium   1    0.45  
    10 species4    high   1    0.30  
    11 species4     low   1    0.20  
    12 species4  medium   1    0.50  
    13 species1    high 100    0.50  
    14 species1     low 100    0.40  
    15 species1  medium 100    0.10  
    16 species2    high 100    0.40  
    17 species2     low 100    0.05  
    18 species2  medium 100    0.55  
    19 species3    high 100    0.65  
    20 species3     low 100    0.05  
    21 species3  medium 100    0.30  
    22 species4    high 100    0.40  
    23 species4     low 100    0.20  
    24 species4  medium 100    0.40  

次のファセット棒グラフを作成しました。

require(ggplot2)

foo$density<-factor(foo$density,levels=c('low','medium','high'))

d <- ggplot(foo, aes(x=species, y=percent, fill=density)) +
    geom_bar(aes(width=.65), stat="identity") +
    facet_grid(. ~ day)

ここに画像の説明を入力してください

ただし、これらのグラフをマージして、単一の2要素棒グラフを作成したいと思います。x軸では、毎日-1と100-が種ごとにグループ化されます。これを作成する方法について何か提案はありますか?

どうもありがとう!

4

2 に答える 2

4

これを試してみてください

foo$species_day <- with(data = foo, expr = paste(species, day))
d <-ggplot(foo, aes(x=species_day, y=percent, fill=density)) +
      geom_bar(aes(width=.65), stat="identity")

ここに画像の説明を入力してください 必要に応じて、レベルを再配置できます。

于 2012-08-02T05:24:56.240 に答える
1

これは、@Joranの提案と要件を組み込んだ別のアプローチです。

ファクターに変更dayしましたが、デフォルトのx軸ラベルも「種」に変更しました。また、これは明らかにシーケンシャルファクターであるため、Color Brewer( http://colorbrewer2.org/density )のシーケンシャルカラースケールを使用しました。番号を変更するか、名前でパレットを呼び出すことにより、カラースケールを試すことができます 。ColorBrewerWebページでパレット名を見つけます。palettescale_fill_brewer(palette="GnBu")

foo <- read.table(header=TRUE,
                 text="species  density day percent  
                    1  species1    high   1    0.40  
                    2  species1     low   1    0.20  
                    3  species1  medium   1    0.40  
                    4  species2    high   1    0.35  
                    5  species2     low   1    0.10  
                    6  species2  medium   1    0.55  
                    7  species3    high   1    0.35  
                    8  species3     low   1    0.20  
                    9  species3  medium   1    0.45  
                    10 species4    high   1    0.30  
                    11 species4     low   1    0.20  
                    12 species4  medium   1    0.50  
                    13 species1    high 100    0.50  
                    14 species1     low 100    0.40  
                    15 species1  medium 100    0.10  
                    16 species2    high 100    0.40  
                    17 species2     low 100    0.05  
                    18 species2  medium 100    0.55  
                    19 species3    high 100    0.65  
                    20 species3     low 100    0.05  
                    21 species3  medium 100    0.30  
                    22 species4    high 100    0.40  
                    23 species4     low 100    0.20  
                    24 species4  medium 100    0.40")

foo$density <- factor(foo$density, levels=c("low", "medium", "high"))
foo$day <- factor(paste("Day", foo$day, sep="_"))

library(ggplot2)

d2 <- ggplot(foo, aes(x=day, y=percent, fill=density)) +
      theme_bw() +
      geom_bar(width=0.95, stat="identity") +
      scale_fill_brewer(type="seq", palette=15) +
      xlab("Species") +
      opts(axis.text.x=theme_text(size=6)) +
      facet_grid(. ~ species)

ggsave("barplot_1.png", d2, width=6, height=4)

ここに画像の説明を入力してください

私が解決していない問題の1つは、レベルがdensity適切な順序でスタックしないことです(私にとって、または@ MYaseen208の回答)。元の投稿ではスタッキングは正しいです。誰かが問題が何であるか知っていますか?

于 2012-08-02T18:16:33.743 に答える