0
for loopを使用して、Speciesのデータを.pngファイルに設定したアイリスデータに保存しようとしています。しかし、以前は、実際のデータプロッティングプロセスで行う必要があったように、ファセットストリップの厚さを変更したいと思っています。それぞれの修正されたファセットをggplot2に保存する
しかし、私は各ファセット の下に次のコードを書き込んで、これらの種のそれぞれについて空のプロットを与えようとしました。ここで
は
library(ggplot2)
plot_list = list()
for (i in unique(iris$Species)) {
p = ggplot(iris[iris$Species == i, ], aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point(size=3, aes(colour=Species))+
facet_wrap(~Species)
#this part to modify facet_wrap strips
g1 = ggplotGrob(p)
pos = c(unique(subset(g1$layout, grepl("panel", g1$layout$name), select = t)))
for(i in pos) g1$heights[i-1] = unit(0.4,"cm")
grobs = which(grepl("strip", g1$layout$name))
for(i in grobs) g1$grobs[[i]]$heights <- unit(1, "npc")
grid.newpage()
grid.draw(g1)
plot_list[[i]] = g1
}
#finally write the modified graphs to file
for (i in 1:3) {
file_name = paste("iris_plot_", i, ".png", sep="")
tiff(file_name)
print(plot_list[[i]])
dev.off()
}
は現在、このコードは、空のグラフを生産している、なぜ知らない、私の試みです!どんな助けもありがとう!
こんにちは。コメントとあなたのソリューションをありがとう。実際に私は、テキストサイズが1つの解決策であるが、私が経験した正しい方法ではないという設定を認識しています。多くのファセットがあり、ストリップテキストを非常に小さくすると、ストロートテキストを見るのは非常に困難です。ターンアラウンドメソッドは、私のOPコードのように、文字列を間引くことです。 – Alexander
私は[ここで] https://stackoverflow.com/questions/36783189/changing-the-appearance-of-facet-labels-size – Alexander
@Alexanderで尋ねました。grobオブジェクトに変更を加えたい場合は、あなたのループカウンタはまっすぐです。一つの方法は(上記で示したように) 'i'が値そのものではなく' unique(iris $ Species) 'の各値のインデックスを取るようにすることです。もしこのループの中にもっと多くのループがあるならば、例えば'j'。 –