#how to use ggplo2 ##by Reza Baneshi
line chart
library(tidyverse);library(tidyr);library(ggplot2);library(nlme);library(ggpubr)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5 v purrr 0.3.4
## v tibble 3.1.6 v dplyr 1.0.7
## v tidyr 1.1.4 v stringr 1.4.0
## v readr 2.0.1 v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
##
## Attaching package: 'nlme'
## The following object is masked from 'package:dplyr':
##
## collapse
library(ggplot2);library(networkD3);library(htmlwidgets);library(highcharter);library(htmlwidgets);library(networkD3)
##
## Attaching package: 'htmlwidgets'
## The following object is masked from 'package:networkD3':
##
## JS
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
##
## Attaching package: 'highcharter'
## The following object is masked from 'package:networkD3':
##
## JS
a=ggplot(data=BOD,aes(x=Time,y=demand))
a=a+geom_point(size=5) #size of dots
a=a+geom_line(colour="red") #colour of line
a
##density plot
qplot(depth, data=diamonds, geom="density", xlim = c(54, 70))
## Warning: Removed 38 rows containing non-finite values (stat_density).
qplot(depth, data=diamonds, geom="density", xlim = c(54, 70),
fill = cut, alpha = I(0.2))
## Warning: Removed 38 rows containing non-finite values (stat_density).
b=ggplot (CO2,aes(conc,uptake,colour=Treatment)) #different colours
b=b+geom_point(size=3,alpha=0.5) #size and transparency of dots
b=b+geom_smooth(method=lm,se=F) #regress lines for each treatment
b=b+facet_wrap(~Type) #split by type
b=b+labs(title="Concentration of CO2") #add title
b=b+theme_bw() #change theme
b
## `geom_smooth()` using formula 'y ~ x'
mydata=subset(mpg,(cty<25))
d=ggplot(mydata,aes(displ,cty))
d=d+geom_point(aes(colour=drv,size=trans),alpha=0.5)
d=d+geom_smooth(method=lm)
d=d+facet_wrap(~year,nrow=1)
d=d+theme_bw()
d
## Warning: Using size for a discrete variable is not advised.
## `geom_smooth()` using formula 'y ~ x'
#One-dimensional scatter plot
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
s=ggplot(ToothGrowth, aes(x=dose, y=len))
s=s+ geom_jitter()
s=s+stat_summary(fun.y=mean,geom="point",shape=18,size=3, color="red")
## Warning: `fun.y` is deprecated. Use `fun` instead.
s=s+stat_summary(fun.y=median,geom="point",shape=18,size=3,color="blue")
## Warning: `fun.y` is deprecated. Use `fun` instead.
s
c=ggplot (CO2,aes(Treatment,uptake))
c=c+geom_boxplot()
c=c+geom_point(alpha=0.5,aes(size=conc,colour=Plant))
c=c+facet_wrap(~Type)
c=c+coord_flip() #horisontal vs. vertical
c=c+theme_bw()
c
z=ggplot(ToothGrowth, aes(x=dose, y=len))
z=z+geom_boxplot()
z=z+geom_jitter(position=position_jitter(0.2))
z=z+stat_compare_means(label.x = 1.5,method="t.test",
comparisons=list(c("0.5","1"),c("1","2"),c("0.5","2")))
z
male=rnorm(20,mean=167,sd=6.7)
female=rnorm(20,mean=154,sd=5.7)
df=data.frame(male,female)
library(tidyr)
df=gather(df,sex,height,male,female)
df
## sex height
## 1 male 171.0200
## 2 male 163.4221
## 3 male 172.6242
## 4 male 168.5692
## 5 male 161.4463
## 6 male 171.0580
## 7 male 168.2252
## 8 male 163.6195
## 9 male 160.8518
## 10 male 168.3494
## 11 male 167.2158
## 12 male 164.2001
## 13 male 172.1730
## 14 male 163.4914
## 15 male 165.1710
## 16 male 160.6158
## 17 male 169.9342
## 18 male 159.6438
## 19 male 168.0471
## 20 male 170.7905
## 21 female 150.9840
## 22 female 147.9987
## 23 female 160.6923
## 24 female 156.0995
## 25 female 158.4904
## 26 female 151.0008
## 27 female 167.0334
## 28 female 144.5053
## 29 female 151.1106
## 30 female 157.8171
## 31 female 148.2564
## 32 female 147.1826
## 33 female 155.7455
## 34 female 155.4675
## 35 female 139.1497
## 36 female 161.3961
## 37 female 154.7587
## 38 female 154.6253
## 39 female 154.4678
## 40 female 159.0767
library(ggpubr)
library(ggplot2)
k=ggplot(df, aes(sex,height))
k=k+geom_boxplot()
k=k+stat_compare_means(label.x = 1.5,method="t.test",
comparisons=list(c("male","female")))
k
bb=ggplot(Oxboys, aes(Occasion, height))
bb=bb+ geom_boxplot()
bb=bb+geom_line(aes(group = Subject), colour = "#3366FF")
bb
#with cumu. prop. without position arguments stack frequency
dd=subset(starwars, (hair_color=="black"|hair_color=="brown"))
f=ggplot(dd,aes(hair_color,fill=gender))
f=f+geom_bar(position="dodge",alpha=0.5)
f=f+facet_wrap(~hair_color)
f=f+theme_bw()
f
#spogeti plot+ global line)
library(ggplot2)
library(nlme)
p=ggplot(Oxboys, aes(age, height, group = Subject))
p=p+geom_line()
p + geom_smooth(aes(group = Subject), method="lm", se = F) ##add subject-specific regression lines
## `geom_smooth()` using formula 'y ~ x'
p + geom_smooth(aes(group = 1), method="lm", size = 2, se = F) ## add global line
## `geom_smooth()` using formula 'y ~ x'
require(nlme, quiet = TRUE, warn.conflicts = FALSE)
model <- lme(height ~ age, data = Oxboys,random = ~ 1 + age | Subject)
kk=ggplot(Oxboys, aes(age, height, group = Subject))
kk=kk+geom_line()
kk
#dot plt + CI
age=c(18,19,20,21,22,23,24,25,26,27,28,29,30)
BMI=c(24.14,29.83,27.41,28.29,27.97,27.84,27.75,27.74,29.44,29.47,28.05,26.63,28.67)
ci=c(1.64,3.09,2.48,2.31,1.99,1.78,1.31,1.31,1.66,1.94,1.86,2.13,3.58)
data=data.frame(age,BMI,ci)
a=ggplot(data=data,aes(x=age,y=BMI))
a=a+scale_x_continuous(breaks=seq(18,30,by=1),
labels=c('18 yrs\nN=2','19 yrs\nN=22','20 yrs\nN=33','21 yrs\nN=42',
'22 yrs\nN=64',
'23 yrs\nN=61','24 yrs\nN=76','25 yrs\nN=94','26 yrs\nN=62',
'27 yrs\nN=55',
'28 yrs\nN=45','29 yrs\nN=27','30yrs\nN=7'))
a=a+scale_y_continuous(limits=c(0,35),breaks = seq(0,35,by=5))
a=a+geom_point(size=5)
a=a+labs(y="Average BMI (kg/m2",x="Age at diagnosis (years) and number diagnosed (N)")
a=a+theme_bw()
a=a+theme(panel.grid.major.x = element_blank(),panel.grid.minor.x = element_blank())
a=a+geom_errorbar(aes(ymin=BMI-ci,ymax=BMI+ci),width=0.5)
a
#SANKEY PLOTS
library(networkD3)
library(htmlwidgets)
## create a dataframe with 10 nodes
nodes = data.frame("name" = c("Node_0", "Node_1", "Node_2", "Node_3", "Node_4", "Node_5",
"Node_6", "Node_7", "Node_8", "Node_9"))
## create edges with weights
links = as.data.frame(matrix(c(0, 5, 2, # node 0 -> node 5 with weight 2
0, 6, 1, # node 0 -> node 6 with weight 1
1, 7, 3, # node 1 -> node 7 with weight 3
2, 8, 2, # node 2 -> node 8 with weight 2
2, 9, 3, # node 2 -> node 9 with weight 3
3, 5, 1, # node 3 -> node 5 with weight 1
3, 9, 5, # node 3 -> node 9 with weight 5
4, 9, 2 # node 4 -> node 9 with weight 2
), byrow = TRUE, ncol = 3))
names(links) = c("source", "target", "value")
node_color <- 'd3.scaleOrdinal() .domain(["Node_0", "Node_1", "Node_2", "Node_3", "Node_4",
"Node_5", "Node_6", "Node_7", "Node_8", "Node_9"]) .range(["red", "blue", "orange" ,
"yellow", "cyan", "green", "magenta", "dodgerblue", "pink", "black"])'
p = sankeyNetwork(Links = links, Nodes = nodes,
Source = "source", Target = "target",
Value = "value", NodeID = "name",
fontSize = 16, nodeWidth = 40,colourScale = node_color)
p
attach(nodes)
attach(links)
nodes=data.frame(nodes)
links=data.frame(links)
p = sankeyNetwork(Links = links, Nodes = nodes,
Source = "source", Target = "target",
Value = "value", NodeID = "name",
fontSize = 16, nodeWidth = 40)
p
library(highcharter)
library(htmlwidgets)
library(dplyr)
set.seed(111)
t0=sample(x=c)
t1=sample(x=c("Hosp A","Hosp B","Hosp C"),size=100,replace=TRUE)
t2=sample(x=c("Male","Female"),size=100,replace=TRUE)
t3=sample(x=c("Survived","Died"),size=100,replace=TRUE)
d=data.frame(cbind(t1,t2,t3))
names(d)=c('Hospital','Gender','Outcome')
pl=hchart(data_to_sankey(d),"sankey",name="Hospital and Gender based Outcomes")
pl%>%
hc_title(text="Sankey Diagram")%>%
hc_subtitle(text="Hospital and Gender based Outcomes")%>%
hc_caption(text="this is my caption")
htmlwidgets::saveWidget(widget=pl,file="P:\\map.html")
library(networkD3)
id=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
name=c("low2000","healthy2000","over2000","obese2000",
"low2003","healthy2003","over2003","obese2003",
"low2006","healthy2006","over2006","obese2006",
"low2009","healthy2009","over2009","obese2009")
nodes=data.frame(id,name)
source=c(0,0,0,0,
1,1,1,1,
2,2,2,2,
3,3,3,3,
4,4,4,4,
5,5,5,5,
6,6,6,6,
7,7,7,7,
8,8,8,8,
9,9,9,9,
10,10,10,10,
11,11,11,11)
target=c(4,5,6,7,
4,5,6,7,
4,5,6,7,
4,5,6,7,
8,9,10,11,
8,9,10,11,
8,9,10,11,
8,9,10,11,
12,13,14,15,
12,13,14,15,
12,13,14,15,
12,13,14,15)
value=c(10,20,30,5,
30,40,10,7,
10,25,11,24,
30,50,34,17,
12,21,19,5,
12,10,25,3,
16,9,6,41,
5,8,4,12,
27,32,21,25,
12,10,25,23,
23,18,25,18,
21,14,38,41)
links=data.frame(source,target,value)
my_color <- 'd3.scaleOrdinal() .domain(["low2000", "healthy2000","over2000", "obese2000",
"low2003", "healthy2003", "over2003", "obese2003",
"low2006", "healthy2006", "over2006", "obese2006",
"low2009", "healthy2009", "over2009", "obese2009"])
.range(["blue", "orange", "yellow", "green",
"blue", "orange", "yellow", "green",
"blue", "orange", "yellow", "green",
"blue", "orange", "yellow", "green"])'
r=sankeyNetwork(Links=links,Nodes=nodes,Source="source",Target="target",Value="value",NodeID="name",
fontSize=11,nodeWidth = 20,fontFamily = "sans-serif",iterations=0,colourScale = my_color)
r
saveWidget(widget=r,file="P:\\r.html")