Results
## In above, fig.width and fig.height ensure sufficient plot size
## Arrange for plots to be arranged vertically, reduce plot margins to avoid "figure margins too large" error
## par(mfcol=c(4,1),mar=c(1,1,1,1),cex.axis=0.5,cex.lab=0.5,cex.main=0.8)
par(mfcol=c(4,1),mar=c(1,1,1,1))
require(qcc)
## Loading required package: qcc
## Package 'qcc', version 2.6
## Type 'citation("qcc")' for citing this R package in publications.
p_fatalities <- pareto.chart(v_fatalities_pareto,ylab="Cumulative Fatalities",xlab="Event Type",main="Pareto Chart for Fatalities",cex.names=0.2)
p_injuries <- pareto.chart(v_injuries_pareto,ylab="Cumulative Injuries",xlab="Event Type",main="Pareto Chart for Injuries",cex.names=0.2)
p_propdam <- pareto.chart(v_propdam_pareto,ylab="Cumulative Cost",xlab="Event Type",main="Pareto Chart for Property Damage",cex.names=0.1)
p_cropdam <- pareto.chart(v_cropdam_pareto,ylab="Cumulative Cost",xlab="Event Type",main="Pareto Chart for Crop Damage",cex.names=0.2)

## Create bar charts showing top 10 contributors to FATALITIES & INJURIES (combined)
## and property damage & crop damage (combined)
## Arrange fat_inj_by_EVTYPE and prop_crop_by_EVTYPE in descending order by
## total_fat_inj and total_propcrop, respectively.
fat_inj_descending <- fat_inj_by_EVTYPE[order(-fat_inj_by_EVTYPE[,2]),]
propcrop_descending <- prop_crop_by_EVTYPE[order(-prop_crop_by_EVTYPE[,2]),]
## select top 10 event types from fat_inj_descending and propcrop_descending
fat_inj_top_10 <- fat_inj_descending[c(1:10), ]
propcrop_top_10 <- propcrop_descending[c(1:10), ]
## Plot bar charts for fat_inj_top_10 and propcrop_top_10
## Arrange for plots to be arranged 2 high and 1 wide
par(mfcol=c(2,1))
barplot(fat_inj_top_10$total_fat_inj, names.arg=fat_inj_top_10$EVTYPE, cex.names=0.5,las=2,
cex.axis=0.6,cex.lab=0.6,xlab="Event Type", ylab="Combined Fatalities and Injuries")
mtext(side=3,"Top 10 Event Types resulting in Fatalities and Injuries",line=2,cex=1.0)
barplot(propcrop_top_10$total_propcrop, names.arg=propcrop_top_10$EVTYPE, cex.names=0.5,las=2,
cex.axis=0.6,cex.lab=0.6,xlab="Event Type", ylab="Total Cost ($)")
mtext(side=3,"Top 10 Event Types resulting in Property & Crop Damage",line=2,cex=1.0)

# Prepare data to plot polar plots showing event activity relative to season
# calculate day of year for each record
core_fields$day_of_year <- yday(core_fields$BGN_DATE)
core_fields$day_of_year_degrees <- core_fields$day_of_year *360/365
# extract subsets of data corresponding to major event types
tornado_data <- filter(core_fields,EVTYPE=="TORNADO")
excessive_heat_data <- filter(core_fields,EVTYPE=="EXCESSIVE HEAT")
lightning_data <- filter(core_fields,EVTYPE=="LIGHTNING")
thunderstorm_wind_data <- filter(core_fields,EVTYPE=="TSTM WIND")
flood_data <- filter(core_fields,EVTYPE=="FLOOD")
hurricane_typhoon_data <- filter(core_fields,EVTYPE=="HURRICANE/TYPHOON")
storm_surge_data <- filter(core_fields,EVTYPE=="STORM SURGE")
drought_data <- filter(core_fields,EVTYPE=="DROUGHT")
ice_storm_data <- filter(core_fields,EVTYPE=="ICE STORM")
# group subsets by day_of_year_degrees field
tornado_by_day <- group_by(tornado_data,day_of_year_degrees)
excessive_heat_by_day <- group_by(excessive_heat_data,day_of_year_degrees)
lightning_by_day <- group_by(lightning_data,day_of_year_degrees)
thunderstorm_wind_by_day <- group_by(thunderstorm_wind_data,day_of_year_degrees)
flood_by_day <- group_by(flood_data,day_of_year_degrees)
hurricane_typhoon_by_day <- group_by(hurricane_typhoon_data,day_of_year_degrees)
storm_surge_by_day <- group_by(storm_surge_data,day_of_year_degrees)
drought_by_day <- group_by(drought_data,day_of_year_degrees)
ice_storm_by_day <- group_by(ice_storm_data,day_of_year_degrees)
# count occurrences per day
tornado_count <- summarise(tornado_by_day,count=n())
excessive_heat_count <- summarise(excessive_heat_by_day,count=n())
lightning_count <- summarise(lightning_by_day,count=n())
thunderstorm_wind_count <- summarise(thunderstorm_wind_by_day,count=n())
flood_count <- summarise(flood_by_day,count=n())
hurricane_typhoon_count <- summarise(hurricane_typhoon_by_day,count=n())
storm_surge_count <- summarise(storm_surge_by_day,count=n())
drought_count <- summarise(drought_by_day,count=n())
ice_storm_count <- summarise(ice_storm_by_day,count=n())
# plot polar graphs
## Arrange for plots to be arranged 3 high and 3 wide
par(mfcol=c(3,3),cex.lab=0.5)
# install.packages("plotrix")
# library(plotrix)
require(plotrix)
## Loading required package: plotrix
# polar.plot(tornado_count$count,tornado_count$day_of_year_degrees, rp.type="p", lwd=2, line.col="red", xaxt='n',ylim=c(0,max(tornado_count$count)), labels="", show.grid.labels=FALSE)
polar.plot(tornado_count$count,tornado_count$day_of_year_degrees, rp.type="p", lwd=2,
line.col="red", xaxt='n',ylim=c(0,max(tornado_count$count)),
labels=c("Jan 1","Feb 1","Mar 1","Apr 1","May 1","Jun 1","Jul 1","Aug 1","Sep 1","Oct 1","Nov 1","Dec 1"),
label.pos=c(0,32,59,90,119,150,180,210,241,270,301,330),
start=90,clockwise=TRUE,show.grid.labels=FALSE,
main="Tornado Activity")
polar.plot(excessive_heat_count$count,excessive_heat_count$day_of_year_degrees, rp.type="p", lwd=2,
line.col="red", xaxt='n',ylim=c(0,max(excessive_heat_count$count)),
labels=c("Jan 1","Feb 1","Mar 1","Apr 1","May 1","Jun 1","Jul 1","Aug 1","Sep 1","Oct 1","Nov 1","Dec 1"),
label.pos=c(0,32,59,90,119,150,180,210,241,270,301,330),
start=90,clockwise=TRUE,show.grid.labels=FALSE,
main="Excessive Heat Activity")
polar.plot(lightning_count$count,lightning_count$day_of_year_degrees, rp.type="p", lwd=2,
line.col="red", xaxt='n',ylim=c(0,max(lightning_count$count)),
labels=c("Jan 1","Feb 1","Mar 1","Apr 1","May 1","Jun 1","Jul 1","Aug 1","Sep 1","Oct 1","Nov 1","Dec 1"),
label.pos=c(0,32,59,90,119,150,180,210,241,270,301,330),
start=90,clockwise=TRUE,show.grid.labels=FALSE,
main="Lightning Activity")
polar.plot(thunderstorm_wind_count$count,thunderstorm_wind_count$day_of_year_degrees, rp.type="p", lwd=2,
line.col="red", xaxt='n',ylim=c(0,max(thunderstorm_wind_count$count)),
labels=c("Jan 1","Feb 1","Mar 1","Apr 1","May 1","Jun 1","Jul 1","Aug 1","Sep 1","Oct 1","Nov 1","Dec 1"),
label.pos=c(0,32,59,90,119,150,180,210,241,270,301,330),
start=90,clockwise=TRUE,show.grid.labels=FALSE,
main="Thunderstorm Wind Activity")
polar.plot(flood_count$count,flood_count$day_of_year_degrees, rp.type="p", lwd=2,
line.col="red", xaxt='n',ylim=c(0,max(flood_count$count)),
labels=c("Jan 1","Feb 1","Mar 1","Apr 1","May 1","Jun 1","Jul 1","Aug 1","Sep 1","Oct 1","Nov 1","Dec 1"),
label.pos=c(0,32,59,90,119,150,180,210,241,270,301,330),
start=90,clockwise=TRUE,show.grid.labels=FALSE,
main="Flood Activity")
polar.plot(hurricane_typhoon_count$count,hurricane_typhoon_count$day_of_year_degrees, rp.type="p", lwd=2,
line.col="red", xaxt='n',ylim=c(0,max(hurricane_typhoon_count$count)),
labels=c("Jan 1","Feb 1","Mar 1","Apr 1","May 1","Jun 1","Jul 1","Aug 1","Sep 1","Oct 1","Nov 1","Dec 1"),
label.pos=c(0,32,59,90,119,150,180,210,241,270,301,330),
start=90,clockwise=TRUE,show.grid.labels=FALSE,
main="Hurricane-Typhoon Activity")
polar.plot(storm_surge_count$count,storm_surge_count$day_of_year_degrees, rp.type="p", lwd=2,
line.col="red", xaxt='n',ylim=c(0,max(storm_surge_count$count)),
labels=c("Jan 1","Feb 1","Mar 1","Apr 1","May 1","Jun 1","Jul 1","Aug 1","Sep 1","Oct 1","Nov 1","Dec 1"),
label.pos=c(0,32,59,90,119,150,180,210,241,270,301,330),
start=90,clockwise=TRUE,show.grid.labels=FALSE,
main="Storm Surge Activity")
polar.plot(drought_count$count,drought_count$day_of_year_degrees, rp.type="p", lwd=2,
line.col="red", xaxt='n',ylim=c(0,max(drought_count$count)),
labels=c("Jan 1","Feb 1","Mar 1","Apr 1","May 1","Jun 1","Jul 1","Aug 1","Sep 1","Oct 1","Nov 1","Dec 1"),
label.pos=c(0,32,59,90,119,150,180,210,241,270,301,330),
start=90,clockwise=TRUE,show.grid.labels=FALSE,
main="Drought Activity")
polar.plot(ice_storm_count$count,ice_storm_count$day_of_year_degrees, rp.type="p", lwd=2,
line.col="red", xaxt='n',ylim=c(0,max(ice_storm_count$count)),
labels=c("Jan 1","Feb 1","Mar 1","Apr 1","May 1","Jun 1","Jul 1","Aug 1","Sep 1","Oct 1","Nov 1","Dec 1"),
label.pos=c(0,32,59,90,119,150,180,210,241,270,301,330),
start=90,clockwise=TRUE,show.grid.labels=FALSE,
main="Ice Storm Activity")
