options(digits=2)
set.seed(2)
e1 <- data.frame(a5=c(8,12,16,7,3,11,7,4,10,13,15,6,18,5),b5=c(15,17,18,21,20,9,22,14,15,6,5,23,13,17))
e <- round(e1,2)
summary(e)
##        a5             b5      
##  Min.   : 3.0   Min.   : 5.0  
##  1st Qu.: 6.2   1st Qu.:13.2  
##  Median : 9.0   Median :16.0  
##  Mean   : 9.6   Mean   :15.4  
##  3rd Qu.:12.8   3rd Qu.:19.5  
##  Max.   :18.0   Max.   :23.0
library(DT)
datatable(e,caption='販売数',editable='cell',rownames=F)
COL <- c(rgb(255,0,255,55,max=255),rgb(111,255,111,49,max=255),rgb(245,213,90,50,max=255))
boxplot(e,col=COL,ylim=c(0,25),names=c('A','B'),main='14日間の販売数',xlab='店',ylab='販売数(個)')
abline(h=seq(-50,50,5),lty=2,col=COL[1])
summary(e)
##        a5             b5      
##  Min.   : 3.0   Min.   : 5.0  
##  1st Qu.: 6.2   1st Qu.:13.2  
##  Median : 9.0   Median :16.0  
##  Mean   : 9.6   Mean   :15.4  
##  3rd Qu.:12.8   3rd Qu.:19.5  
##  Max.   :18.0   Max.   :23.0
library(plotly)
##  要求されたパッケージ ggplot2 をロード中です
## 
##  次のパッケージを付け加えます: 'plotly'
##  以下のオブジェクトは 'package:ggplot2' からマスクされています:
## 
##     last_plot
##  以下のオブジェクトは 'package:stats' からマスクされています:
## 
##     filter
##  以下のオブジェクトは 'package:graphics' からマスクされています:
## 
##     layout

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks plotly::filter(), stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
c <- pivot_longer(e, cols=c('a5','b5'))
kyoukasho <- list(size=11,color=COL,family='UD Digi Kyoukasho NK-R')
plot_ly(data=c,x=c$name,y=c$value,split=c$name,type='box',boxpoints='all',jitter=0.3,pointpos=-8)%>%
  layout(font=kyoukasho,title='14日間の販売数',xaxis=list(title='店'),yaxis=list(title='販売数(個)'))
library(vioplot)
##  要求されたパッケージ sm をロード中です 
## Package 'sm', version 2.2-6.0: type help(sm) for summary information
##  要求されたパッケージ zoo をロード中です 
## 
##  次のパッケージを付け加えます: 'zoo' 
## 
##  以下のオブジェクトは 'package:base' からマスクされています:
## 
##     as.Date, as.Date.numeric
vioplot(e,col=COL,rectCol='white',plotCentre='line',ylim=c(0,30),names=c('A','B'),main='14日間の販売数',xlab='店',ylab='販売数(個)')
points(apply(e,2,mean),pch=3)
abline(h=seq(-50,50,5),lty=2,col=COL[1])
legend('topleft',pch=3,legend='平均値')

library(plotly)
kyoukasho <- list(size=11,color=COL,family='UD Digi Kyoukasho NK-R')
c <- pivot_longer(e, cols=c('a5','b5'))
plot_ly(x=c$name,y=c$value,split=c$name,type='violin',box=list(visible=T),meanline=list(visible=T))%>%
  layout(font=kyoukasho,title='14日間の販売数',xaxis=list(title='店'),yaxis=list(title='販売数(個)'))