0

私は自分のデータを次のようにプロットしようとしています (このブログから取得):

バーのサイズで並べ替え

私のデータは次のようになります。

head(Diet)
   Group      Category studies_n studies_pc
1  algae         algae        61       38.4
2  algae       biofilm         4        2.5
3  algae       diatoms         8        5.0
4  algae       fil alg        18       11.3
5  algae phytoplankton         2        1.3
6 insect    Coleoptera        59       37.1

「カテゴリ」は実際には「グループ」のサブカテゴリであり、各「グループ」には個別の「カテゴリ」が含まれています。たとえば、藻類グループには「カテゴリ」にリストされている 5 種類の藻類のみが含まれ、昆虫グループには藻類カテゴリは含まれません。

グループを特定の順序でプロットし、調査の数 ("studies_n") をランク順にプロットしたい:

Diet$Group <- factor(Diet$Group, levels = c("algae", "detritus", "mollusc", "crustacean", "insect", "fish", "other"))
Diet$Category <- factor(Diet$Category, levels=Diet[order(Diet$studies_n), "Category"])

これが確立されたので、データをプロットする 2 つの異なる方法を試しました。

方法 A.

pDiet <- ggplot(Diet, aes(x=Category, weight=studies_n)) +
  geom_bar() +
  facet_grid(.~Group, scales="free_x", space="free") +
  ylab("number of studies") + 
  theme(axis.text.x=element_text(angle=90))  
plot(pDiet)

これは問題ありませんが、バーを垂直ではなく水平にした方がよいでしょう (ラベルを読みやすくするため)。また、x 軸のテキストは整列されていません。

プロット A

方法 B.

pDiet <- ggplot(Diet, aes(x=Category, y=studies_n)) +
  geom_bar(stat="identity") +
  coord_flip() +
  theme(axis.title.y=element_blank()) +
  facet_grid(Group~., scales="free", space="free") +
  theme(strip.text.y = element_text(angle=0)) +
  ylab("number of studies")
plot(pDiet)

これはより良いレイアウトですが、すべてのカテゴリがグループごとにプロットされており、それはばかげています。

ここに画像の説明を入力

ヘルプ?

4

0 に答える 0