options(digits = 2) # 有効数字2桁表示
set.seed(2) # 乱数シード
d0 <- data.frame(
u = rnorm(n = 100, mean = 0, sd = 1),
v = rnorm(n = 100, mean = 2, sd = 2),
w = rnorm(n = 100, mean = -2, sd = 3))
d <- round(d0, 2) # 小数点第2位に丸め
str(d) # オブジェクト構造表示
## 'data.frame': 100 obs. of 3 variables:
## $ u: num -0.9 0.18 1.59 -1.13 -0.08 0.13 0.71 -0.24 1.98 -0.14 ...
## $ v: num 4.15 2.52 1.37 0.5 0.28 6.1 3.88 6.02 1.16 1.3 ...
## $ w: num -1.11 -5.06 6.61 -1.34 -4.9 -0.85 -2.37 -3.05 -0.2 -1.31 ...
summary(d) # 要約統計量
## u v w
## Min. :-2.45 Min. :-2.2 Min. :-10.2
## 1st Qu.:-0.86 1st Qu.: 0.4 1st Qu.: -3.4
## Median :-0.14 Median : 2.2 Median : -1.8
## Mean :-0.03 Mean : 2.1 Mean : -1.6
## 3rd Qu.: 0.81 3rd Qu.: 3.5 3rd Qu.: 0.2
## Max. : 2.09 Max. : 6.2 Max. : 6.7
library(DT)
## Warning: パッケージ 'DT' はバージョン 4.3.3 の R の下で造られました
datatable(d, caption = '正規乱数データ', editable = 'cell', rownames = F)
# カラーパレット
COL <- c(rgb(255, 0, 0, 105, max = 255), # 赤
rgb( 0, 0, 255, 105, max = 255), # 青
rgb( 0, 155, 0, 105, max = 255)) # 緑
boxplot(d)
オプションを設定して見栄えを良くする。
# プロット
boxplot(d, col = COL,
ylim = c(-12, 12),
names = c('U', 'V', 'W'),
main = '主タイトル',
xlab = '項目ラベル',
ylab = 'y軸ラベル[単位]')
# 罫線
abline(h = seq(-50, 50, 5), lty = 2, col = gray(.5, .25))
library(plotly)
library(tidyverse)
ds <- pivot_longer(d, cols = c('u', 'v', 'w')) # ロング形式に変換
# フォント設定
kyokasho <- list(size = 11,
color = 'blue',
family = 'UD Digi Kyokasho NK-R')
plot_ly(x = ds$name, y = ds$value, split = ds$name, type = 'box',
boxpoints = 'all', jitter = 0.3, pointpos = -1.8) |>
layout(font = kyokasho,
title = '主タイトル',
xaxis = list(title = '項目ラベル'),
yaxis = list(title = 'y軸ラベル[単位]'))
library(vioplot)
# プロット
vioplot(d, col = COL, rectCol = 'white',
plotCentre = 'line',
ylim = c(-12, 12),
names = c('U', 'V', 'W'),
main = '主タイトル',
xlab = '項目ラベル',
ylab = 'y軸ラベル[単位]')
# 平均値(+)
points(apply(d, 2, mean), pch = 3)
# 罫線
abline(h = seq(-50, 50, 5), lty = 2, col = gray(0.5, 0.25))
# 凡例
legend('topleft', pch = 3, legend = '平均値')
plot_ly(x = ds$name, y = ds$value, split = ds$name, type = 'violin',
box = list(visible = T), meanline = list(visible = T)) |>
layout(font = kyokasho,
title = '主タイトル',
xaxis = list(title = '項目ラベル'),
yaxis = list(title = 'y軸ラベル[単位]'))
import numpy as np
np.random.seed(3)
u = np.random.normal(loc = 0.0, scale = 1.0, size = 100)
v = np.random.normal(loc = 2.0, scale = 2.0, size = 100)
w = np.random.normal(loc =-2.0, scale = 3.0, size = 100)
d = [u, v, w]
【注意】「init.tclが見つからない」エラーが発生する場合は,Rパッケージのtclをインストールすると解消する。
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# ラベル
plt.title('主タイトル')
plt.xlabel('項目ラベル')
plt.ylabel('y軸ラベル[単位]')
# 格子線(grid lines)
plt.grid(linestyle = '--', color = (0.9, 0.9, 0.9, 0.25), axis = 'y')
# 項目ラベル,着色の有無
plt.boxplot(d, labels = ['u', 'v', 'w'], patch_artist = True)
## {'whiskers': [<matplotlib.lines.Line2D object at 0x000001AFAE7A4210>, <matplotlib.lines.Line2D object at 0x000001AFAE7D99D0>, <matplotlib.lines.Line2D object at 0x000001AFAE7E9210>, <matplotlib.lines.Line2D object at 0x000001AFAE7E9D10>, <matplotlib.lines.Line2D object at 0x000001AFAE7F1B90>, <matplotlib.lines.Line2D object at 0x000001AFAE7F26D0>], 'caps': [<matplotlib.lines.Line2D object at 0x000001AFAE7DA590>, <matplotlib.lines.Line2D object at 0x000001AFAE7DB050>, <matplotlib.lines.Line2D object at 0x000001AFAE7EA810>, <matplotlib.lines.Line2D object at 0x000001AFAE7EB290>, <matplotlib.lines.Line2D object at 0x000001AFAE7F30D0>, <matplotlib.lines.Line2D object at 0x000001AFAE7F3BD0>], 'boxes': [<matplotlib.patches.PathPatch object at 0x000001AFAE7D8FD0>, <matplotlib.patches.PathPatch object at 0x000001AFAE75D090>, <matplotlib.patches.PathPatch object at 0x000001AFAE7F1210>], 'medians': [<matplotlib.lines.Line2D object at 0x000001AFAE7DB790>, <matplotlib.lines.Line2D object at 0x000001AFAE7EBCD0>, <matplotlib.lines.Line2D object at 0x000001AFAE800650>], 'fliers': [<matplotlib.lines.Line2D object at 0x000001AFAE7E8090>, <matplotlib.lines.Line2D object at 0x000001AFAE7F0850>, <matplotlib.lines.Line2D object at 0x000001AFAE801150>], 'means': []}
# 作図
plt.show()