一张图上的多个图(filled.contour)

时间:2016-02-17 15:30:20

标签: r plot contour

我想在一张图上组合多个等值线图。我的代码如下所示。

d1<- read.table("/home/amy/Desktop/data.csv",sep=",",header=T)
ax<-d1$c1
ay<-d1$c2
library(MASS)
density1 <- kde2d(ax, ay)
par(mfrow=c(1,2))
filled.contour(density1, xlab= "x axis",
    ylab= "y axis ", main ="first plot", xlim=c(0,100), ylim=c(0,100), 
    color.palette=colorRampPalette(c('white','blue','yellow','darkgreen','darkred')))


    bx<-d1$c3
    by<-d1$c4
    library(MASS)
    density2 <- kde2d(bx, by)
    filled.contour(density2, xlab= "x axis",
        ylab= "y axis ", main ="second plot", xlim=c(0,100), ylim=c(0,100), 
        color.palette=colorRampPalette(c('white','blue','yellow','darkgreen','darkred')))

我的数据示例如下所示。

data.csv

c1     c2    c3    c4

23.7  36.8   45.6  32.5
45.5  23.8   67.5  34.8 
21.6  56.9   12.5  56.7
89.5  45.4   23.3  45.7

1 个答案:

答案 0 :(得分:0)

看起来filled.contour会覆盖任何预先存在的布局,因此您无法并排绘制两个单独的图。您可以尝试修改功能代码以更改处理布局的方式(在控制台中键入filled.contour以查看功能代码)以创建功能的自定义版本。另一种方法是使用levelplot包中的lattice为您的图表,然后使用grid.arrange包中的gridExtra将其展开。这是一个例子:

library(lattice)
library(gridExtra)

# Fake data (taken from the fill.contour help examples)
x <- y <- seq(-4*pi, 4*pi, len = 100)
r <- sqrt(outer(x^2, y^2, "+"))

p1 = levelplot(cos(r^2)*exp(-r/(2*pi)))
p2 = levelplot(cos(r)*exp(-r/(2*pi)))

# Lay out both plots
grid.arrange(p1, p2, ncol=2)

enter image description here