Scatter Plot

load("C:/Users/nc20/Downloads/cdc.Rdata")
plot(cdc$weight, cdc$wtdesire)

# y = ax + b
# wtdesire = a* weight + b
plot(wtdesire ~ weight, data = cdc)

?lm
## starting httpd help server ... done
fit <- lm(wtdesire ~ weight, data = cdc)

# wtdesire = 0.639 * weight + 46.664
fit
## 
## Call:
## lm(formula = wtdesire ~ weight, data = cdc)
## 
## Coefficients:
## (Intercept)       weight  
##      46.664        0.639
plot(wtdesire ~ weight, data = cdc)
abline(v = 450, col='blue')
abline(h = 400, col='orange')
abline(fit    , col='red')

data(iris)
head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
x <- iris[,1]
y <- iris[,3]
s <- iris[,5]
s
##   [1] setosa     setosa     setosa     setosa     setosa     setosa    
##   [7] setosa     setosa     setosa     setosa     setosa     setosa    
##  [13] setosa     setosa     setosa     setosa     setosa     setosa    
##  [19] setosa     setosa     setosa     setosa     setosa     setosa    
##  [25] setosa     setosa     setosa     setosa     setosa     setosa    
##  [31] setosa     setosa     setosa     setosa     setosa     setosa    
##  [37] setosa     setosa     setosa     setosa     setosa     setosa    
##  [43] setosa     setosa     setosa     setosa     setosa     setosa    
##  [49] setosa     setosa     versicolor versicolor versicolor versicolor
##  [55] versicolor versicolor versicolor versicolor versicolor versicolor
##  [61] versicolor versicolor versicolor versicolor versicolor versicolor
##  [67] versicolor versicolor versicolor versicolor versicolor versicolor
##  [73] versicolor versicolor versicolor versicolor versicolor versicolor
##  [79] versicolor versicolor versicolor versicolor versicolor versicolor
##  [85] versicolor versicolor versicolor versicolor versicolor versicolor
##  [91] versicolor versicolor versicolor versicolor versicolor versicolor
##  [97] versicolor versicolor versicolor versicolor virginica  virginica 
## [103] virginica  virginica  virginica  virginica  virginica  virginica 
## [109] virginica  virginica  virginica  virginica  virginica  virginica 
## [115] virginica  virginica  virginica  virginica  virginica  virginica 
## [121] virginica  virginica  virginica  virginica  virginica  virginica 
## [127] virginica  virginica  virginica  virginica  virginica  virginica 
## [133] virginica  virginica  virginica  virginica  virginica  virginica 
## [139] virginica  virginica  virginica  virginica  virginica  virginica 
## [145] virginica  virginica  virginica  virginica  virginica  virginica 
## Levels: setosa versicolor virginica
xlab <- names(iris)[1]
ylab <- names(iris)[3]
#plot(x,y, xlab = xlab, ylab = ylab, col='red')
plot(x,y, xlab = xlab, ylab = ylab, col=s)

color_lab <- ifelse(iris[,3] > median(iris[,3]), 'red', 'blue')
cex_lab   <- ifelse(iris[,3] > median(iris[,3]), 3, 1)
#cex_lab
plot(x,y, xlab = xlab, ylab = ylab, col=color_lab, cex = cex_lab, pch=19)

x <- iris[,1]
y <- iris[,3]

xlab <- names(iris)[1]
ylab <- names(iris)[3]


setosa     <- iris$Species == 'setosa'
versicolor <- iris$Species == 'versicolor'
setosa     <- which(iris$Species == 'setosa')
versicolor <- which(iris$Species == 'versicolor')

plot(x,y, xlab=xlab, ylab=ylab, type= 'n')
points(iris[setosa,1], iris[setosa,3], col= 'green')
points(iris[versicolor,1], iris[versicolor,3], col= 'red')

data('anscombe')
fit <- lm(y3 ~ x1, data = anscombe)
plot(y3 ~ x1, data = anscombe)
abline(fit, col='red')

fit <- lm(y3[x1!=13] ~ x1[x1!=13], data = anscombe)
plot(y3 ~ x1, data = anscombe)
abline(fit, col='red')

library(MASS)
fit <- rlm(y3 ~ x1, data = anscombe)
plot(y3 ~ x1, data = anscombe)
abline(fit, col='red')

head(cdc)
##     genhlth exerany hlthplan smoke100 height weight wtdesire age gender
## 1      good       0        1        0     70    175      175  77      m
## 2      good       0        1        1     64    125      115  33      f
## 3      good       1        1        1     60    105      105  49      f
## 4      good       1        1        0     66    132      124  42      f
## 5 very good       0        1        0     61    150      130  55      f
## 6 very good       1        1        0     64    114      114  55      f
plot(wtdesire ~ weight, data = cdc)
fit <- lm(wtdesire ~ weight, data = cdc)
abline(fit, col='red')

plot(wtdesire ~ weight, data = cdc, col= gender)

male   <- cdc$gender == 'm'
female <- cdc$gender == 'f'

fit_male   <- lm(wtdesire ~ weight, data = cdc[male,])
fit_female <- lm(wtdesire ~ weight, data = cdc[female,])
plot(wtdesire ~ weight, data = cdc, type='n')
points(wtdesire ~ weight, data = cdc[male,], col='blue')
abline(fit_male, col='orange', lwd=3)
points(wtdesire ~ weight, data = cdc[female,], col='red')
abline(fit_female, col='purple', lwd=3)

Mosaic Plot

table(cdc$gender)
## 
##     m     f 
##  9569 10431
table(cdc$smoke100)
## 
##     0     1 
## 10559  9441
tb <- table(cdc$gender, cdc$smoke100)

mosaicplot(tb, col=rainbow(2), main= 'Smokers by Gender')

Boxplot

hist(cdc$weight)

hist(cdc$height)

boxplot(cdc$weight)

grades <- c(0,45,50,60,70,65,72,80,100)
sort(grades)
## [1]   0  45  50  60  65  70  72  80 100
median(grades)
## [1] 65
quantile(grades, 0.75)
## 75% 
##  72
quantile(grades, 0.25)
## 25% 
##  50
# 72 - 50
IQR(grades)
## [1] 22
boxplot(grades)

min(grades[grades > (median(grades) - 1.5 * IQR(grades))])
## [1] 45
max(grades[grades > (median(grades) + 1.5 * IQR(grades))])
## [1] 100
boxplot(cdc$height ~ cdc$gender)

Legend

Taipei <- c(92.5,132.6,168.8,159.1,218.7)
Tainan <- c(21.2, 30.6, 37.3, 84.6, 184.3)

plot(Taipei, type= 'o', ylim=c(0,260), xlim=c(1,6), col='blue', xlab='Month', ylab = 'Rainfall', main = 'Taipei Rainfall v.s. Tainan Rainfall')
lines(Tainan, type= 'o',col='red',pch=22, lty=2)
text(5.5, 230, 'Taipei', col='blue')
text(5.5, 200, 'Tainan', col='red')
legend(x=1, y=200, c('Taipei', 'Tainan'), lwd=2, col=c('blue', 'red'), lty=c(1,2))
legend('bottomright', c('Taipei', 'Tainan'), lwd=2, col=c('blue', 'red'), lty=c(1,2))

housePrice <- read.csv('https://raw.githubusercontent.com/ywchiu/rtibame/master/data/house-prices.csv', header = TRUE)
bedroomTable <- table(housePrice$Bedrooms)

tb <- sort(bedroomTable, decreasing = TRUE)
pie(tb, labels = c('3 Units', '2 Units', '4 Units', '5 Units'), init.angle = 90, clockwise = TRUE, col=rainbow(4),main = 'Bedroom Pie Chart')
legend('bottomright', c('3 Units', '2 Units', '4 Units', '5 Units'), fill=rainbow(4))

Par

showLayout <- function(n){
  for(i in 1:n){
    plot(1,type="n",xaxt="n",yaxt="n",xlab="",ylab="")
    text(1, 1, labels=i, cex=10)
    }
}


par(mfrow=c(3,2), mar=c(1,1,1,1))
showLayout(6)

par(mfcol=c(3,2), mar=c(1,1,1,1))
showLayout(6)

par(mfrow=c(3,2), mar=c(3,3,3,3))
showLayout(6)

Save Figure to Disk

par(mfrow=c(1,1))
housePrice <- read.csv('https://raw.githubusercontent.com/ywchiu/rtibame/master/data/house-prices.csv', header = TRUE)
bedroomTable <- table(housePrice$Bedrooms)

tb <- sort(bedroomTable, decreasing = TRUE)
pie(tb, labels = c('3 Units', '2 Units', '4 Units', '5 Units'), init.angle = 90, clockwise = TRUE, col=rainbow(4),main = 'Bedroom Pie Chart')
legend('bottomright', c('3 Units', '2 Units', '4 Units', '5 Units'), fill=rainbow(4))

jpeg('bedroompie.jpg')
pie(tb, labels = c('3 Units', '2 Units', '4 Units', '5 Units'), init.angle = 90, clockwise = TRUE, col=rainbow(4),main = 'Bedroom Pie Chart')
legend('bottomright', c('3 Units', '2 Units', '4 Units', '5 Units'), fill=rainbow(4))
dev.off()
## png 
##   2

使用Tableau 做財經資訊視覺化