ggplot2::ggplot()
ile oluşturduğum bir arsaya küçük bir özet tablosu eklemeyi denedim. Tablo, kaydedilen ggplot nesnesine gridExtra::tableGrob()
üzerinden eklenir.gridExtra ve annotation_custom() ile ggplot'a bir tablo ekleme y ekseni sınırlarını değiştirir
Benim sorunum, bu, orijinal arsamın y sınırlarını değiştiriyor gibi görünüyor. ylim()
aracılığıyla sınırları tekrar belirtmek zorunda kalmadan bundan kaçınmanın bir yolu var mı? İşte
# load packages
require(ggplot2)
require(gridExtra)
# create plot
plot1 = ggplot(data = ChickWeight, aes(x = Time, y = weight, color = Diet)) +
stat_summary(fun.data = "mean_cl_boot", size = 1, alpha = .5)
plot1
# create table to add to the plot
sum_table = aggregate(ChickWeight$weight,
by=list(ChickWeight$Diet),
FUN = mean)
names(sum_table) = c('Diet', 'Mean')
sum_table = tableGrob(sum_table)
# insert table into plot
plot1 + annotation_custom(sum_table)
DÜZENLEME: Sadece stat_summary()
ile ilgili bir sorun gibi görünüyor anladım. Başka bir geom/katman kullandığımda, sınırlar orijinal çizimde oldukları gibi kalır. Bunun için başka bir örneği:
plot2 = ggplot(data = ChickWeight, aes(x = Time, y = weight, color = Diet)) +
geom_jitter()
plot2
plot2 + annotation_custom(sum_table)
Sorundan emin değilim, ama bunun "stat_summary" ile bir sorun olduğunu düşünmüyorum. "Plot2 + stat_summary (fun.data =" mean_cl_boot ", size = 1, alpha = .5) + annotation_custom (sum_table) 'o zaman ylimiz korunur. – George
Bu ilginç. 'Geom =' pointrange '(' stat_summary 'varsayılan olarak kullanır) yerine, tüm veri aralığı için y sınırlarını ayarlar. Yani eğer bunu doğru görüyorsam, ilk örneğimde ylim özetlenen ve gösterilen değerlerin aralığına ("pointrange") göre ayarlandı, ancak "annotation_custom" ifadesini eklerken tüm verilerin aralığını tekrar kullanır. – abel