我想使用ggplot2包并排放置两个图,即相当于par(mfrow=c(1,2)).
例如,我希望以下两个图表以相同的比例并排显示.
x <- rnorm(100)
eps <- rnorm(100,0,.2)
qplot(x,3*x+eps)
qplot(x,2*x+eps)
Run Code Online (Sandbox Code Playgroud)
我需要将它们放在相同的data.frame中吗?
qplot(displ, hwy, data=mpg, facets = . ~ year) + geom_smooth()
Run Code Online (Sandbox Code Playgroud) 我需要通过列号而不是名称来绘制带有寻址变量的散点图,即ggplot(dat, aes(x=Var1, y=Var2))我不需要像ggplot(dat, aes(x=dat[,1], y=dat[,2])).(我说'某事',因为后者不起作用).
这是我的代码:
showplot1<-function(indata, inx, iny){
dat<-indata
print(nrow(dat)); # this is just to show that object 'dat' is defined
p <- ggplot(dat, aes(x=dat[,inx], y=dat[,iny]))
p + geom_point(size=4, alpha = 0.5)
}
testdata<-data.frame(v1=rnorm(100), v2=rnorm(100), v3=rnorm(100), v4=rnorm(100), v5=rnorm(100))
showplot1(indata=testdata, inx=2, iny=3)
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)# Error in eval(expr, envir, enclos) : object 'dat' not found
我正在使用ggplot2绘制图形,我有facet_wrap制作多个图形(~51)的功能,但它们都出现在一个页面上.现在搜索后,我发现ggplot2无法在多个页面上放置图形.
有没有办法做到这一点?我看了这个问题(使用ggplot在多个页面上多个图表)并尝试了代码,但收效甚微.
这是我的图形代码,它在一个页面上生成约51个图形,使它们非常小而且难以看到,如果我可以在pdf中将每页打印到1个图形,那将是很好的:
ggplot(indbill, aes(x = prey, y = weight), tab) +
geom_polygon(aes(group = load, color = capture), fill = NA, size = 0.75) +
facet_wrap(~ individual) +
theme(axis.ticks.x = element_blank(),
axis.text.x = element_text(size=rel(0.5)),
axis.ticks.y = element_blank(),
axis.text.y = element_blank()) +
xlab("") + ylab("") +
guides(color = guide_legend(ncol=2)) +
coord_radar()
Run Code Online (Sandbox Code Playgroud)
如果有人可以写一些代码并向我解释,那就太好了!
谢谢!
我经常使用具有"R友好"/"程序员友好"列名的数据框,通常没有空格和/或缩写(懒惰以在进行分析时键入全名).例如:
ir <- data.frame(
sp=iris$Species,
sep.len=iris$Sepal.Length,
sep.wid=iris$Sepal.Width,
pet.len=iris$Petal.Length,
pet.wid=iris$Petal.Width
)
Run Code Online (Sandbox Code Playgroud)
当我用ggplot绘制这些时,我经常想用"用户友好"的列名替换标签,例如
p <- ggplot(ir, aes(x=sep.len, y=sep.wid, col=sp)) + geom_point() +
xlab("sepal length") + ylab("sepal width") +
scale_color_discrete("species")
Run Code Online (Sandbox Code Playgroud)
问题:有没有办法指定标签映射进入ggplot?
lazy.labels <- c(
sp ='species',
sep.len='sepal length',
sep.wid='sepal width',
pet.len='petal length',
pet.wid='petal width'
)
Run Code Online (Sandbox Code Playgroud)
并做一些类似的事情
p + labs(lazy.labels)
Run Code Online (Sandbox Code Playgroud)
甚至
p + xlab(lazy.labels[..x..]) + ylab(lazy.labels[..y..])
Run Code Online (Sandbox Code Playgroud)
在哪里..x..,..y..是一些自动ggplot变量保存当前X/Y变量的名称?(然后我可以将这些注释放入一个便利函数中而不必为每个图更改它们)
当我在报告中制作许多图时,这尤其有用.我总是可以ir使用"用户友好"列重命名,但之后我必须做很多事情
ggplot(ir, aes(x=`sepal length`, y=`sepal width`, ...
Run Code Online (Sandbox Code Playgroud)
由于所有的空间,这有点麻烦.
我想在一个循环中制作多个ggplot,并在一个绘图上显示它们。
for ( i in 1:8) {
g <- ggplot(data=mtcars, aes(x=hp, y=wt))+
geom_point()
print(g)
}
Run Code Online (Sandbox Code Playgroud)
我想将上面的图安排在一页,四行和两列上。有谁知道这是怎么做到的吗?谢谢。