2

ggplot2 を使用して視覚化したい集計データがあり、集計データをプロットするためのスマートなショートカットを探していますか?

私が持っているデータは次のようになります(現在、次のようなデータしかありませんdf2

df <- data.frame(cyl = mtcars[,2])
(df2 <- t(table(df$cyl)))
      4  6  8
[1,] 11  7 14

そして、私はこのようなプロットを作成することに興味があります (codeこのプロットの作成に使用されるものについては以下を参照してください)

集計データの geom_bar

require(ggplot2)
df <- data.frame(cyl = mtcars[,2])
df$cyl2  <- ifelse(df$cyl > 4, c('Treatment'), c('Control'))
# hline.data <- data.frame(cyl2 = c('Treatment', 'Control'), cyl = c(10, 2))

c <- ggplot(df, aes(factor(cyl)))
c + geom_bar(fill="white", colour="darkgreen", alpha=0.5) + facet_grid(. ~ cyl2, scales = "free", space = "free") + theme(axis.title.x  = element_blank(), axis.title.y  = element_blank(), axis.ticks.x = element_blank(), legend.position = "none") + scale_y_continuous(breaks=c(4, 6, 8), labels=c("Minimal","Mild", "Moderate")) + scale_x_discrete(breaks=c(6,8,4), labels=c("Treat 1", "Treat 2", "Control")) 

ここまでたどり着いた人へのボーナス質問。breaks=2 つの面でscale_y_continuous異なるものを作成することは可能ですか? geom_hlineそれとも、余白に を追加してテキストを追加するほうがよいでしょうか? マージンを追加するのは非常に難しいようです。これまたはこれのようにクリッピングをオーバーライドする必要がありますか?

4

1 に答える 1

1

基本的には、集計データをデータフレームに取得してから、グループ ラベルを追加するだけです。

df <- data.frame(cyl = mtcars[,2])
(df2 <- t(table(df$cyl)))
# Assume you know the group labels
df2 <- data.frame(val=df2[1, ], label=c("Control", "Treat1", "Treat2"))
df2$cyl2 <- c("Control", "Treatment", "Treatment")

ggplot(df2, aes(label, val)) +
geom_bar(fill="white", colour="darkgreen", alpha=0.5, stat="identity") +
  facet_grid(. ~ cyl2, scales = "free", space = "free") +
  theme(axis.title.x  = element_blank(), axis.title.y  = element_blank(),
        axis.ticks.x = element_blank(), legend.position = "none") +
  scale_y_continuous(breaks=c(4, 6, 8), labels=c("Minimal","Mild", "Moderate")) +
  scale_x_discrete(breaks=c(6,8,4), labels=c("Treat 1", "Treat 2", "Control"))
于 2013-01-30T05:24:52.980 に答える