2016-02-17 3 views
0

Я хотел бы объединить несколько контурных графиков на одном графике. Мой код показан ниже.Несколько графиков на одном графике (fill.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 
+0

Перед запуском кода построения графиков, сделайте 'пар (mfrow = с (1,2))', например. Запустите '? Par' для получения дополнительной информации о' mfrow' и других графических параметрах для базовой графики. – eipi10

+0

В моем случае параметр par (mfrow = c (1,2)) не работает. Я просто получил второй сюжет, а не получил два сюжета. – amy

ответ

0

Похоже 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