require(ggplot2)
require(knitr)
source("trapezium.R")
dirdat <- ".."

Data

We use the simplified table sent by Gabor

options("width"=140)
vmetrics <- read.csv(file.path(dirdat,"test.csv"),stringsAsFactors = FALSE)
#head(vmetrics)
names(vmetrics) <- c("Edifice","Type", "Ccr", "Dcrmax", "Scrmean",
                     "Scrmedian","Wco", "Hco","Smean","Smedian",
                     "Hco/Wco","Ccr/Wco","Dcr/Hco", "Crmin/Crmax",
                     "Elong", "IsoCirc")
summary(vmetrics)
   Edifice              Type                Ccr             Dcrmax          Scrmean        Scrmedian          Wco              Hco       
 Length:26          Length:26          Min.   : 230.0   Min.   :  7.00   Min.   : 5.30   Min.   : 5.10   Min.   : 310.0   Min.   : 5.50  
 Class :character   Class :character   1st Qu.: 368.5   1st Qu.: 24.25   1st Qu.:20.05   1st Qu.:19.50   1st Qu.: 625.4   1st Qu.:21.12  
 Mode  :character   Mode  :character   Median : 496.0   Median : 58.50   Median :22.60   Median :23.30   Median : 975.2   Median :49.75  
                                       Mean   : 605.0   Mean   : 80.15   Mean   :21.45   Mean   :21.90   Mean   :1052.7   Mean   :43.69  
                                       3rd Qu.: 758.0   3rd Qu.: 96.75   3rd Qu.:25.15   3rd Qu.:25.25   3rd Qu.:1264.5   3rd Qu.:62.88  
                                       Max.   :1379.0   Max.   :298.00   Max.   :31.30   Max.   :34.00   Max.   :2323.5   Max.   :95.00  
                                                                         NA's   :3       NA's   :3                                       
     Smean          Smedian         Hco/Wco           Ccr/Wco          Dcr/Hco       Crmin/Crmax         Elong           IsoCirc      
 Min.   : 2.70   Min.   : 2.30   Min.   :0.01000   Min.   :0.4000   Min.   :0.470   Min.   :0.6200   Min.   :0.5600   Min.   :0.7900  
 1st Qu.: 8.05   1st Qu.: 7.15   1st Qu.:0.02000   1st Qu.:0.5200   1st Qu.:1.095   1st Qu.:0.8000   1st Qu.:0.8200   1st Qu.:0.8925  
 Median :15.85   Median :15.80   Median :0.04500   Median :0.5900   Median :1.460   Median :0.9000   Median :0.9200   Median :0.9400  
 Mean   :15.27   Mean   :14.95   Mean   :0.04885   Mean   :0.5842   Mean   :1.793   Mean   :0.8712   Mean   :0.8823   Mean   :0.9265  
 3rd Qu.:19.23   3rd Qu.:19.30   3rd Qu.:0.06000   3rd Qu.:0.6550   3rd Qu.:1.910   3rd Qu.:0.9500   3rd Qu.:0.9875   3rd Qu.:0.9700  
 Max.   :34.20   Max.   :34.20   Max.   :0.16000   Max.   :0.7400   Max.   :5.680   Max.   :1.0700   Max.   :1.1000   Max.   :0.9800  
                                                                                                                                      
#head(vmetrics,3)

Plot shapes

I thought it would be interesting seeing a simplified shape of the edifices from the metrics Hco (cone height), Ccr (mean crater diameter) and Wco (cone width). I hacked trapezium.R from original matlab code. This function returns the vertices of a trapezium given height and both diameters, e.g.

plot(trapezium(h=vmetrics$Hco[1], a=vmetrics$Ccr[1], b=vmetrics$Wco[1]),
     xlab="",ylab="",main=c(vmetrics$Edifice[1],vmetrics$Type[1]))
lines(trapezium(h=vmetrics$Hco[1], a=vmetrics$Ccr[1], b=vmetrics$Wco[1]))

I use this function to calculate the vertices of all trapezii and then display with ggplot:

a <-NULL
for(i in (1:nrow(vmetrics))) {
  a <- rbind(a,trapezium(h=vmetrics$Hco[i], a=vmetrics$Ccr[i], b=vmetrics$Wco[i]))
}
a <- data.frame(a)
b <- data.frame(Edifice=rep(vmetrics$Edifice,rep(5,nrow(vmetrics))),
                Type=rep(vmetrics$Type,rep(5,nrow(vmetrics))),
                x=a[,1], y=a[,2])
b <- rbind(b[b$Type=="Tuff Cone",],b[b$Type=="Tuff Ring",])
b$Edifice <- factor(b$Edifice, levels=unique(b$Edifice))
g1 <- ggplot(data=b) +
  geom_path(aes(x=x,y=y,group=Edifice,col=Type),size=1) +
  xlab("Diameter (Wco and Ccr)") + ylab("Cone Height") +
  theme(axis.text.x=element_text(angle=45,hjust=1)) +
  facet_wrap(~Edifice) +
  ggtitle("Simplified view of volcanic edifices (I)")
print(g1)

Figure 1. Simplified view of volcanic edifices as trapezii. Scale is kept constant so differences in size can be appreciated.



g2 <- ggplot(data=b) +
  geom_path(aes(x=x,y=y,group=Edifice,col=Type),size=1) +
  xlab("Diameter (Wco and Ccr)") + ylab("Cone Height") +
  theme(axis.text.x=element_text(angle=45,hjust=1)) +
  facet_wrap(~Edifice, scales="free_y") +
  ggtitle("Simplified view of volcanic edifices (II)")
print(g2)

Figure 2. Simplified view of volcanic edifices as trapezii. Only x scale is kept constant hence emphasizing differences in shape

LS0tDQp0aXRsZTogJ01vcnBob21ldHJ5IG9mIHZvbGNhbmljIGVkaWZpY2VzJw0Kb3V0cHV0Og0KICBodG1sX25vdGVib29rOg0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGZpZ19jYXB0aW9uOiBUUlVFDQotLS0NCg0KKiBBZ3VzdGluLkxvYm9AaWN0amEuY3NpYy5lcw0KKiAyMDIwMDMzMA0KDQpgYGB7cn0NCnJlcXVpcmUoZ2dwbG90MikNCnJlcXVpcmUoa25pdHIpDQpzb3VyY2UoInRyYXBleml1bS5SIikNCmRpcmRhdCA8LSAiLi4iDQpgYGANCg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCg0KYm9keSwgdGQgew0KICAgZm9udC1zaXplOiAxNHB4Ow0KfQ0KY29kZS5yew0KICBmb250LXNpemU6IDEwcHg7DQp9DQpwcmUgew0KICBmb250LXNpemU6IDEwcHgNCn0NCjwvc3R5bGU+DQojIyBEYXRhDQpXZSB1c2UgdGhlIHNpbXBsaWZpZWQgdGFibGUgc2VudCBieSBHYWJvcg0KYGBge3J9DQpvcHRpb25zKCJ3aWR0aCI9MTQwKQ0Kdm1ldHJpY3MgPC0gcmVhZC5jc3YoZmlsZS5wYXRoKGRpcmRhdCwidGVzdC5jc3YiKSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpDQojaGVhZCh2bWV0cmljcykNCm5hbWVzKHZtZXRyaWNzKSA8LSBjKCJFZGlmaWNlIiwiVHlwZSIsICJDY3IiLCAiRGNybWF4IiwgIlNjcm1lYW4iLA0KICAgICAgICAgICAgICAgICAgICAgIlNjcm1lZGlhbiIsIldjbyIsICJIY28iLCJTbWVhbiIsIlNtZWRpYW4iLA0KICAgICAgICAgICAgICAgICAgICAgIkhjby9XY28iLCJDY3IvV2NvIiwiRGNyL0hjbyIsICJDcm1pbi9Dcm1heCIsDQogICAgICAgICAgICAgICAgICAgICAiRWxvbmciLCAiSXNvQ2lyYyIpDQpzdW1tYXJ5KHZtZXRyaWNzKQ0KI2hlYWQodm1ldHJpY3MsMykNCmBgYA0KDQoNCg0KIyMgUGxvdCBzaGFwZXMNCkkgdGhvdWdodCBpdCB3b3VsZCBiZSBpbnRlcmVzdGluZyBzZWVpbmcgYSBzaW1wbGlmaWVkIHNoYXBlIG9mIHRoZSBlZGlmaWNlcyBmcm9tIHRoZSBtZXRyaWNzIEhjbyAoY29uZSBoZWlnaHQpLCBDY3IgKG1lYW4gY3JhdGVyIGRpYW1ldGVyKSBhbmQgV2NvIChjb25lIHdpZHRoKS4gSSBoYWNrZWQgdHJhcGV6aXVtLlIgZnJvbSBvcmlnaW5hbCBtYXRsYWIgY29kZS4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB2ZXJ0aWNlcyBvZiBhIHRyYXBleml1bSBnaXZlbiBoZWlnaHQgYW5kIGJvdGggZGlhbWV0ZXJzLCBlLmcuDQpgYGB7cixmaWcud2lkdGg9NH0NCnBsb3QodHJhcGV6aXVtKGg9dm1ldHJpY3MkSGNvWzFdLCBhPXZtZXRyaWNzJENjclsxXSwgYj12bWV0cmljcyRXY29bMV0pLA0KICAgICB4bGFiPSIiLHlsYWI9IiIsbWFpbj1jKHZtZXRyaWNzJEVkaWZpY2VbMV0sdm1ldHJpY3MkVHlwZVsxXSkpDQpsaW5lcyh0cmFwZXppdW0oaD12bWV0cmljcyRIY29bMV0sIGE9dm1ldHJpY3MkQ2NyWzFdLCBiPXZtZXRyaWNzJFdjb1sxXSkpDQpgYGANCkkgdXNlIHRoaXMgZnVuY3Rpb24gdG8gY2FsY3VsYXRlIHRoZSB2ZXJ0aWNlcyBvZiBhbGwgdHJhcGV6aWkgYW5kIHRoZW4gZGlzcGxheSB3aXRoIGdncGxvdDoNCmBgYHtyfQ0KYSA8LU5VTEwNCmZvcihpIGluICgxOm5yb3codm1ldHJpY3MpKSkgew0KICBhIDwtIHJiaW5kKGEsdHJhcGV6aXVtKGg9dm1ldHJpY3MkSGNvW2ldLCBhPXZtZXRyaWNzJENjcltpXSwgYj12bWV0cmljcyRXY29baV0pKQ0KfQ0KYSA8LSBkYXRhLmZyYW1lKGEpDQpiIDwtIGRhdGEuZnJhbWUoRWRpZmljZT1yZXAodm1ldHJpY3MkRWRpZmljZSxyZXAoNSxucm93KHZtZXRyaWNzKSkpLA0KICAgICAgICAgICAgICAgIFR5cGU9cmVwKHZtZXRyaWNzJFR5cGUscmVwKDUsbnJvdyh2bWV0cmljcykpKSwNCiAgICAgICAgICAgICAgICB4PWFbLDFdLCB5PWFbLDJdKQ0KYiA8LSByYmluZChiW2IkVHlwZT09IlR1ZmYgQ29uZSIsXSxiW2IkVHlwZT09IlR1ZmYgUmluZyIsXSkNCmIkRWRpZmljZSA8LSBmYWN0b3IoYiRFZGlmaWNlLCBsZXZlbHM9dW5pcXVlKGIkRWRpZmljZSkpDQpgYGANCg0KYGBge3IsZmlnLndpZHRoID0gMTAsIGZpZy5oZWlnaHQgPSA2LGZpZy5jYXA9IlRlc3QxIn0NCmcxIDwtIGdncGxvdChkYXRhPWIpICsNCiAgZ2VvbV9wYXRoKGFlcyh4PXgseT15LGdyb3VwPUVkaWZpY2UsY29sPVR5cGUpLHNpemU9MSkgKw0KICB4bGFiKCJEaWFtZXRlciAoV2NvIGFuZCBDY3IpIikgKyB5bGFiKCJDb25lIEhlaWdodCIpICsNCiAgdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTQ1LGhqdXN0PTEpKSArDQogIGZhY2V0X3dyYXAofkVkaWZpY2UpICsNCiAgZ2d0aXRsZSgiU2ltcGxpZmllZCB2aWV3IG9mIHZvbGNhbmljIGVkaWZpY2VzIChJKSIpDQpwcmludChnMSkNCmBgYA0KRmlndXJlIDEuIFNpbXBsaWZpZWQgdmlldyBvZiB2b2xjYW5pYyBlZGlmaWNlcyBhcyB0cmFwZXppaS4gU2NhbGUgaXMga2VwdCBjb25zdGFudCBzbyBkaWZmZXJlbmNlcyBpbiBzaXplIGNhbiBiZSBhcHByZWNpYXRlZC4NCiAgDQpcDQpcDQoNCmBgYHtyLCBmaWcud2lkdGggPSAxMCwgZmlnLmhlaWdodCA9IDYsIGZpZy5jYXA9IlRlc3QyIn0NCmcyIDwtIGdncGxvdChkYXRhPWIpICsNCiAgZ2VvbV9wYXRoKGFlcyh4PXgseT15LGdyb3VwPUVkaWZpY2UsY29sPVR5cGUpLHNpemU9MSkgKw0KICB4bGFiKCJEaWFtZXRlciAoV2NvIGFuZCBDY3IpIikgKyB5bGFiKCJDb25lIEhlaWdodCIpICsNCiAgdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTQ1LGhqdXN0PTEpKSArDQogIGZhY2V0X3dyYXAofkVkaWZpY2UsIHNjYWxlcz0iZnJlZV95IikgKw0KICBnZ3RpdGxlKCJTaW1wbGlmaWVkIHZpZXcgb2Ygdm9sY2FuaWMgZWRpZmljZXMgKElJKSIpDQpwcmludChnMikNCmBgYA0KRmlndXJlIDIuIFNpbXBsaWZpZWQgdmlldyBvZiB2b2xjYW5pYyBlZGlmaWNlcyBhcyB0cmFwZXppaS4gT25seSB4IHNjYWxlIGlzIGtlcHQgY29uc3RhbnQgaGVuY2UgZW1waGFzaXppbmcgZGlmZmVyZW5jZXMgaW4gc2hhcGUNCg0KDQoNCg==