|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
# Various ways of displaying distribution of y values in a data file
|
|
Packit |
0986c0 |
# 1) Violin plots (bee swarm with large number of points)
|
|
Packit |
0986c0 |
# 2) Gaussian jitter
|
|
Packit |
0986c0 |
# 3) Random jitter
|
|
Packit |
0986c0 |
# 4) kernel density
|
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
# Generate a reusable set of data points from a mixture of Gaussians
|
|
Packit |
0986c0 |
nsamp = 3000
|
|
Packit |
0986c0 |
set print $viol1
|
|
Packit |
0986c0 |
do for [i=1:nsamp] {
|
|
Packit |
0986c0 |
y = (i%4 == 0) ? 300. + 70.*invnorm(rand(0)) \
|
|
Packit |
0986c0 |
: (i%4 == 1) ? 400. + 10.*invnorm(rand(0)) \
|
|
Packit |
0986c0 |
: 120. + 40.*invnorm(rand(0))
|
|
Packit |
0986c0 |
print sprintf(" 35.0 %8.5g", y)
|
|
Packit |
0986c0 |
}
|
|
Packit |
0986c0 |
unset print
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
set print $viol2
|
|
Packit |
0986c0 |
do for [i=1:nsamp] {
|
|
Packit |
0986c0 |
y = (i%4 == 0) ? 300. + 70.*invnorm(rand(0)) \
|
|
Packit |
0986c0 |
: (i%4 == 1) ? 250. + 10.*invnorm(rand(0)) \
|
|
Packit |
0986c0 |
: 70. + 20.*invnorm(rand(0))
|
|
Packit |
0986c0 |
print sprintf(" 34.0 %8.5g", y)
|
|
Packit |
0986c0 |
}
|
|
Packit |
0986c0 |
unset print
|
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
set border 2
|
|
Packit |
0986c0 |
set xrange [33:36]
|
|
Packit |
0986c0 |
set xtics ("A" 34, "B" 35)
|
|
Packit |
0986c0 |
set xtics nomirror scale 0
|
|
Packit |
0986c0 |
set ytics nomirror rangelimited
|
|
Packit |
0986c0 |
unset key
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
set jitter overlap first 2
|
|
Packit |
0986c0 |
set title font ",15"
|
|
Packit |
0986c0 |
set title "swarm jitter with a large number of points\n approximates a violin plot"
|
|
Packit |
0986c0 |
set style data points
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
set linetype 9 lc "#80bbaa44" ps 0.5 pt 5
|
|
Packit |
0986c0 |
set linetype 10 lc "#8033bbbb" ps 0.5 pt 5
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
plot $viol1 lt 9, $viol2 lt 10
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
pause -1 'Hit <cr> to continue'
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
set title "Gaussian random jitter"
|
|
Packit |
0986c0 |
unset jitter
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
J = 0.1
|
|
Packit |
0986c0 |
plot $viol1 using ($1 + J*invnorm(rand(0))):2 lt 9, \
|
|
Packit |
0986c0 |
$viol2 using ($1 + J*invnorm(rand(0))):2 lt 10
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
pause -1 "Hit <cr> to continue"
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
set title "Same data - kernel density"
|
|
Packit |
0986c0 |
set style data filledcurves below
|
|
Packit |
0986c0 |
set auto x
|
|
Packit |
0986c0 |
set xtics 0,50,500
|
|
Packit |
0986c0 |
unset ytics
|
|
Packit |
0986c0 |
set border 3
|
|
Packit |
0986c0 |
set margins screen .15, screen .85, screen .15, screen .85
|
|
Packit |
0986c0 |
set key
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
plot $viol1 using 2:(1) smooth kdensity bandwidth 10. with filledcurves above y lt 9 title 'B', \
|
|
Packit |
0986c0 |
$viol2 using 2:(1) smooth kdensity bandwidth 10. with filledcurves above y lt 10 title 'A'
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
pause -1 "Hit <cr> to continue"
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
# Save each kernel density plot to a data block
|
|
Packit |
0986c0 |
# Then replot, mirrored, along the vertical axis
|
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
set title "kdensity mirrored sideways to give a violin plot"
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
set table $kdensity1
|
|
Packit |
0986c0 |
plot $viol1 using 2:(1) smooth kdensity bandwidth 10. with filledcurves above y lt 9 title 'B'
|
|
Packit |
0986c0 |
set table $kdensity2
|
|
Packit |
0986c0 |
plot $viol2 using 2:(1) smooth kdensity bandwidth 10. with filledcurves above y lt 10 title 'A'
|
|
Packit |
0986c0 |
unset table
|
|
Packit |
0986c0 |
unset key
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
set border 2
|
|
Packit |
0986c0 |
unset margins
|
|
Packit |
0986c0 |
unset xtics
|
|
Packit |
0986c0 |
set ytics nomirror rangelimited
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
set xrange [-1:5]
|
|
Packit |
0986c0 |
plot $kdensity2 using (1 + $2/20.):1 with filledcurve x=1 lt 10, \
|
|
Packit |
0986c0 |
'' using (1 - $2/20.):1 with filledcurve x=1 lt 10, \
|
|
Packit |
0986c0 |
$kdensity1 using (3 + $2/20.):1 with filledcurve x=3 lt 9, \
|
|
Packit |
0986c0 |
'' using (3 - $2/20.):1 with filledcurve x=3 lt 9
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
pause -1 "Hit <cr> to continue"
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
set title 'Superimposed violin plot and box plot'
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
set style fill solid bo -1
|
|
Packit |
0986c0 |
set boxwidth 0.075
|
|
Packit |
0986c0 |
set errorbars lt black lw 1
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
replot $viol2 using (1):2 with boxplot fc "white" lw 2, \
|
|
Packit |
0986c0 |
$viol1 using (3):2 with boxplot fc "white" lw 2
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
pause -1 "Hit <cr> to continue"
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
reset
|