SORU
13 Temmuz 2011, ÇARŞAMBA


Nasıl ggplots ızgara kullanarak rasgele bir dizi sağlayabilir.düzenlemek?

Bu ggplot2 google grup çapraz gönderildi

Benim durumum araziler (giriş verileri kullanıcı tarafından sağlanan bağlı olarak) rastgele bir sayı verir working on a function. İşlevi n araziler listesini verir, ve 2 x 2 oluşumunda bu araziler istiyordum. Aynı anda sorunları ile mücadele ediyorum:

  1. Nasıl esneklik parsellerin (n) rasgele bir numara verilmesi için izin alabilir miyim?
  2. Nasıl da istiyorum belirtin 2 x 2 onları koydu

Şimdiki stratejim gridExtra Paket: grid.arrange kullanır. Muhtemelen optimal değil, özellikle bu yana, ve bu anahtaröyle bir şey olmuyor. İşte açıklamalı örnek kodum, üç parselleri deneme:

library(ggplot2)
library(gridExtra)

x <- qplot(mpg, disp, data = mtcars)
y <- qplot(hp, wt, data = mtcars)
z <- qplot(qsec, wt, data = mtcars)

# A normal, plain-jane call to grid.arrange is fine for displaying all my plots
grid.arrange(x, y, z)

# But, for my purposes, I need a 2 x 2 layout. So the command below works acceptably.
grid.arrange(x, y, z, nrow = 2, ncol = 2)

# The problem is that the function I'm developing outputs a LIST of an arbitrary
# number plots, and I'd like to be able to plot every plot in the list on a 2 x 2
# laid-out page. I can at least plot a list of plots by constructing a do.call()
# expression, below. (Note: it totally even surprises me that this do.call expression
# DOES work. I'm astounded.)
plot.list <- list(x, y, z)
do.call(grid.arrange, plot.list)

# But now I need 2 x 2 pages. No problem, right? Since do.call() is taking a list of
# arguments, I'll just add my grid.layout arguments to the list. Since grid.arrange is
# supposed to pass layout arguments along to grid.layout anyway, this should work.
args.list <- c(plot.list, "nrow = 2", "ncol = 2")

# Except that the line below is going to fail, producing an "input must be grobs!"
# error
do.call(grid.arrange, args.list)

Bunu yapmak alışkanlık benim gibi, naçizane bu köşede, Özellikle eğer bunu olması gerekenden daha zor yapıyor muyum diye hevesle bir topluluk benden çok daha akıllı olan zeki geribildirim bekleyen toplantısı.

CEVAP
13 Temmuz 2011, ÇARŞAMBA


Çok az kaldı. Sorun do.call besten list adlı nesne umuyor. Onları listeye koyduk, ama karakter dizeleri olarak, liste öğeleri adında değil.

Bu çalışması gerektiğini düşünüyorum:

args.list <- c(plot.list, 2,2)
names(args.list) <- c("x", "y", "z", "nrow", "ncol")

Ben ve Joshua açıklamalarda belirttiği gibi, liste oluşturdum isimler atanmış olabilir:

args.list <- c(plot.list,list(nrow=2,ncol=2))

ya

args.list <- list(x=x, y=y, z=x, nrow=2, ncol=2)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jesse Pimenta

    Jesse Piment

    5 EKİM 2011
  • Lena Danya

    Lena Danya

    11 NİSAN 2010
  • The Pet Collective

    The Pet Coll

    5 Ocak 2012