0

首先,这是一个家庭作业问题。问题是前。2.6 来自 An Introduction to Applied Multivariate Analysis 的第 26 页。它的布局如下:

使用纬度和经度作为散点图,深度作为圆圈,构建地震数据的气泡图,深度越大圆圈越小。此外,将震级分成三个相等的范围,并根据点所在的震级组用不同的符号标记气泡图中的点。

我发现基本图形中的符号不​​适用于格子。此外,我还没有弄清楚 lattice 是否具有更改符号大小(即气泡大小)的功能。我昨晚绝望地买了这本格子书,正如我在一些例子中看到的,可以为每个“切口”或面板符号颜色和形状。然后我假设符号大小也可以被操纵,但我无法弄清楚如何。

我的代码如下所示:

    plot(xyplot(lat ~ long | cut(mag, 3), data=quakes,
        layout=c(3,1), xlab="Longitude", ylab="Latitude",
        panel = function(x,y){
          grid.circle(x,y,r=sqrt(quakes$depth),draw=TRUE)
        }
    ))

我尝试使用 grid 包来绘制圆圈,但是当它执行时,我只得到一个空白图。谁能指出我正确的方向?我会很感激!

4

3 回答 3

1

这是一些代码,用于在不使用 lattice 包的情况下创建您需要的绘图。我显然必须生成我自己的假数据,这样你就可以忽略所有这些东西,如果你愿意,可以直接使用绘图命令。

####################################################################
#Pseudo Data
n = 20
latitude = sample(1:100,n)
longitude = sample(1:100,n)
depth = runif(n,0,.5)
magnitude = sample(1:100,n)
groups = rep(NA,n)

for(i in 1:n){
if(magnitude[i] <= 33){
    groups[i] = 1
}else if (magnitude[i] > 33 & magnitude[i] <=66){
    groups[i] = 2
}else{
    groups[i] = 3
}
}
####################################################################

#The actual code for generating the plot
plot(latitude[groups==1],longitude[groups==1],col="blue",pch=19,ylim=c(0,100),xlim=c(0,100),
     xlab="Latitude",ylab="Longitude")
points(latitude[groups==2],longitude[groups==2],col="red",pch=15)
points(latitude[groups==3],longitude[groups==3],col="green",pch=17)

points(latitude[groups==1],longitude[groups==1],col="blue",cex=1/depth[groups==1])
points(latitude[groups==2],longitude[groups==2],col="red",cex=1/depth[groups==2])
points(latitude[groups==3],longitude[groups==3],col="green",cex=1/depth[groups==3])

在此处输入图像描述

于 2013-09-10T17:27:28.243 回答
1

你只需要添加default.units = "native"grid.circle()

plot(xyplot(lat ~ long | cut(mag, 3), data=quakes,
            layout=c(3,1), xlab="Longitude", ylab="Latitude",
            panel = function(x,y){
              grid.circle(x,y,r=sqrt(quakes$depth),draw=TRUE, default.units = "native")
            }
))

显然,您需要修改一些设置才能获得所需的内容。

在此处输入图像描述

于 2016-07-29T17:11:01.203 回答
0

我编写了一个名为tactile的包,它添加了一个使用 lattice 生成气泡图的功能。

tactile::bubbleplot(depth ~ lat*long | cut(mag, 3), data=quakes,
                    layout=c(3,1), xlab="Longitude", ylab="Latitude")

在此处输入图像描述

于 2018-02-07T09:04:40.153 回答