2
タイトルとサブタイトルを含む各列の個別のプロットと、各プロットの垂直線を合わせたプロットの生成:各ファセットに固有のタイトルとサブタイトルでファセットプロットを作成するにはどうすればよいですか?
縦線のある列のヒストグラムプロットを使用して作成しました。
library(ggplot2)
library(gridExtra)
library(tidyr)
actualIris <- data.frame(Sepal.Length=6.1, Sepal.Width=3.1, Petal.Length=5.0, Petal.Width=1.7)
# Sepal Length
oneTailed <- sum(actualIris$Sepal.Length < iris$Sepal.Length)/nrow(iris)
plot1SL <- ggplot(iris, aes(x=Sepal.Length)) + geom_histogram() +
geom_vline(xintercept = actualIris$Sepal.Length, col = "blue", lwd = 2) +
labs(title='Distribution of Sepal Length', x='Sepal Length', y='Frequency',
subtitle=paste('one-tailed test=', oneTailed, sep='')) + theme_bw()
以下のコードは、他の3つの列の単なる繰り返しです。 (あなたはそれを無視することができます)。
# Sepal Width
oneTailed <- sum(actualIris$Sepal.Width < iris$Sepal.Width)/nrow(iris)
plot1SW <- ggplot(iris, aes(x=Sepal.Width)) + geom_histogram() +
geom_vline(xintercept = actualIris$Sepal.Width, col = "blue", lwd = 2) +
labs(title='Distribution of Sepal Width', x='Sepal Width', y='Frequency',
subtitle=paste('one-tailed test=', oneTailed, sep='')) + theme_bw()
# Petal Length
oneTailed <- sum(actualIris$Petal.Length < iris$Petal.Length)/nrow(iris)
plot1PL <- ggplot(iris, aes(x=Petal.Length)) + geom_histogram() +
geom_vline(xintercept = actualIris$Petal.Length, col = "blue", lwd = 2) +
labs(title='Distribution of Petal Length', x='Petal Length', y='Frequency',
subtitle=paste('one-tailed test=', oneTailed, sep='')) + theme_bw()
# Petal Width
oneTailed <- sum(actualIris$Petal.Width < iris$Petal.Width)/nrow(iris)
plot1PW <- ggplot(iris, aes(x=Petal.Width)) + geom_histogram() +
geom_vline(xintercept = actualIris$Petal.Width, col = "blue", lwd = 2) +
labs(title='Distribution of Petal Width', x='Petal Width', y='Frequency',
subtitle=paste('one-tailed test=', oneTailed, sep='')) + theme_bw()
# Combine the plots
grid.arrange(plot1SL, plot1SW, plot1PL, plot1PW, nrow=1)
それは下記のプロットになり:私はfacet_wrap
を使用しての代わりに、長いデータを作成した後、複数の単一のプロットを組み合わせた単一のプロットを作成しようとしました
。
tmp <- iris[,-5] %>% gather(Type, value)
#actualIris <- data.frame(Sepal.Length=6.1, Sepal.Width=3.1, Petal.Length=5.0, Petal.Width=1.7)
actuals <- data.frame(col1=colnames(actualIris), col2=as.numeric(actualIris[1,]))
tmp$Actual <- actuals$col2[match(tmp$Type, actuals$col1)]
tmp$Type <- factor(tmp$Type, levels = c('Petal.Length', 'Petal.Width', 'Sepal.Length', 'Sepal.Width'),
labels = c('Petal Length', 'Petal Width', 'Sepal Length', 'Sepal Width'))
ggplot(tmp, aes(value)) + facet_wrap(~Type, scales="free", nrow = 1) + geom_histogram() +
geom_vline(aes(xintercept=Actual), colour="blue", lwd=2)
私はlabeller
オプションを使用してファセットラベルを変更しようとしたが、それはうまくいきませんでした。 (ただし、これは主要な問題ではありません。)
ggplot(tmp, aes(value)) + geom_histogram() +
facet_wrap(~Type, scales="free", nrow = 1,
labeller = as_labeller(paste('Distribution of ', levels(~Type), sep=''))) +
geom_vline(aes(xintercept=Actual), colour="blue", lwd=2)
長いデータtmp
作成を使用して最初のプロットと同様のプロットを作成する方法は?