在R

时间:2017-03-30 21:05:05

标签: r plot aggregate aggregate-functions

我有一组数据,包括358个岩石样本及其密度,p波速度和岩石类型(1-8类)。

我使用聚合函数来找出每种岩石类型的平均密度,并找出每种岩石类型的平均p波速度。

dens = aggregate(SONIC_TXT$Density_g.cm3, by=list(SONIC_TXT$Rock_type), mean)
vel = aggregate(SONIC_TXT$P.WaveVelocity_km.sec, by=list(SONIC_TXT$Rock_type), mean)

我现在想在每个岩石类型的平均密度与每种岩石类型的平均p波速度的散点图上绘制这些结果。

我的尝试返回时有错误说我需要"有限限制"。因此,我对绘图功能添加了限制,并得到了具有这些限制且没有点的图。我尝试了ggplot并且没有错误,但也只是一个"情节"没有轴/边界/点/任何东西。

任何人都可以帮助我吗?

编辑:我的尝试包括:

  1. plot(dens$vel)

    导致:

        Error in plot.window(...) : need finite 'xlim' values
    In addition: Warning messages:
    1: In min(x) : no non-missing arguments to min; returning Inf
    2: In max(x) : no non-missing arguments to max; returning -Inf
    3: In min(x) : no non-missing arguments to min; returning Inf
    4: In max(x) : no non-missing arguments to max; returning -Inf
    
  2. plot(dens$vel, xlim = c(0, 50), ylim = c(0,50),ylab ='ylab', xlab='xlab')

    导致:

    This plot

  3. matplot(dens, cbind(dens$x,vel$x),type="p",col=c("red","green"),pch=16)

    导致:这个情节,更符合我的目标。除了速度值,现在不要与岩石类型对齐。

    enter image description here

  4. 编辑2:

    > dens2
      Rock_type Density_g.cm3
    1         1      2.633226
    2         2      2.677167
    3         3      2.774167
    4         4      2.919500
    5         5      2.823643
    6         6      2.794964
    7         7      3.006226
    8         8      3.240798
    
    > vel2
      Rock_type P.WaveVelocity_km.sec
    1         1              5.640581
    2         2              5.803310
    3         3              5.691533
    4         4              6.426667
    5         5              5.828643
    6         6              6.217643
    7         7              6.715594
    8         8              7.556798
    

1 个答案:

答案 0 :(得分:1)

在您的数据中,vel中没有dens2,而dens2是数据框,而不是矢量。试试这个:

d <- data.frame(dens=dens2$Density_g.cm3, vel2=vel2$P.WaveVelocity_km.sec, 
                type=dens2$Rock_type)
windows()
  with(d, plot(dens, vel2, pch=as.character(type)))

enter image description here

(请参阅原始答案的修订历史记录,这是推测,现在已经过时,因为有一个可重复的示例。)