1920 × 1080 Seen as a design The artboard itself, drawn live — sharp at any zoom Structure, margins and columns overlaid
1920 × 1080 Seen as a design The artboard itself, drawn live — sharp at any zoom Structure, margins and columns overlaid
Copy and paste, or save a file and hand it over. For a machine with no network, one “Everything” file is enough.
Everything in this panel, including the contents behind each URL, in one Markdown file — Large, so it goes as a file (copy is for 32 KB and under)
Produce one slide to the following specification. - Canvas 1920 × 1080 - Margin top 100 right 140 bottom 100 left 140 ## Type (px against a 1920px canvas) title 46px / 700 / tracking 0.01em subtitle 22px / 500 axisTitle 22px / 700 tick 20px / 500 category 28px / 700 sample 20px / 400 takeaway 28px / 500 note 20px / 400 ## Colour Ground #FFFFFF / Surface #F4F6F9 / Ink #131820 / Muted #667183 / Accent #1F5FA8 / Rule #DBE1E9 / #2F6FB5 / #A85A2E ## Constraints — dropping these breaks it - Use 15 observations per channel and a shared width scale for density comparison. - Read vertical position as response time. Width shows how observations concentrate around that time. - Keep the middle 50% and median visible so the distribution shape is not mistaken for a single representative value. - Label the response records as fictional so they are not mistaken for real service performance. - Keep the time range and kernel bandwidth (11 minutes) fixed so tails and peaks do not vary for reasons other than the data. Replace the content with [your content]. Keep the measurements and colours as given. For an exact reproduction, use the verbatim HTML at https://design-vault.pages.dev/designs/violin-plot-support-wait-times/pattern.html.
/ai/designs/violin-plot-support-wait-times.json
format: slide-16x9
density: medium
layout:
kind: axis
canvas:
w: 1920
h: 1080
margin:
top: 100
right: 140
bottom: 100
left: 140
type:
title:
size: 46
weight: 700
tracking: 0.01em
subtitle:
size: 22
weight: 500
axisTitle:
size: 22
weight: 700
tick:
size: 20
weight: 500
category:
size: 28
weight: 700
sample:
size: 20
weight: 400
takeaway:
size: 28
weight: 500
note:
size: 20
weight: 400
colors:
ground: "#FFFFFF"
surface: "#F4F6F9"
ink: "#131820"
muted: "#667183"
accent: "#1F5FA8"
rule: "#DBE1E9"
series:
- "#2F6FB5"
- "#A85A2E"
rules:
- Use 15 observations per channel and a shared width scale for density comparison.
- Read vertical position as response time. Width shows how observations concentrate around that time.
- Keep the middle 50% and median visible so the distribution shape is not mistaken for a single representative value.
- Label the response records as fictional so they are not mistaken for real service performance.
- Keep the time range and kernel bandwidth (11 minutes) fixed so tails and peaks do not vary for reasons other than the data.{
"format": "slide-16x9",
"density": "medium",
"layout": {
"kind": "axis",
"canvas": {
"w": 1920,
"h": 1080
},
"margin": {
"top": 100,
"right": 140,
"bottom": 100,
"left": 140
}
},
"type": {
"title": {
"size": 46,
"weight": 700,
"tracking": "0.01em"
},
"subtitle": {
"size": 22,
"weight": 500
},
"axisTitle": {
"size": 22,
"weight": 700
},
"tick": {
"size": 20,
"weight": 500
},
"category": {
"size": 28,
"weight": 700
},
"sample": {
"size": 20,
"weight": 400
},
"takeaway": {
"size": 28,
"weight": 500
},
"note": {
"size": 20,
"weight": 400
}
},
"colors": {
"ground": "#FFFFFF",
"surface": "#F4F6F9",
"ink": "#131820",
"muted": "#667183",
"accent": "#1F5FA8",
"rule": "#DBE1E9",
"series": [
"#2F6FB5",
"#A85A2E"
]
},
"rules": [
"Use 15 observations per channel and a shared width scale for density comparison.",
"Read vertical position as response time. Width shows how observations concentrate around that time.",
"Keep the middle 50% and median visible so the distribution shape is not mistaken for a single representative value.",
"Label the response records as fictional so they are not mistaken for real service performance.",
"Keep the time range and kernel bandwidth (11 minutes) fixed so tails and peaks do not vary for reasons other than the data."
]
} /designs/violin-plot-support-wait-times/pattern.html — The artboard itself, font subset included — open it and this picture draws.
<!doctype html>
<meta charset="utf-8">
<title>問い合わせの待ち時間 — メールは遅く、ばらつきも大きい</title>
<meta name="dv-font" content="Zen Kaku Gothic New:400;500;700">
<link rel="stylesheet" href="./font.css">
<style>
:root {
--ground: #FFFFFF;
--surface: #F4F6F9;
--ink: #131820;
--muted: #667183;
--accent: #1F5FA8;
--rule: #DBE1E9;
--series-1: #2F6FB5;
--series-2: #A85A2E;
}
* { box-sizing: border-box; margin: 0; }
html, body { width: 1920px; height: 1080px; }
body { font-family: "Zen Kaku Gothic New", "Hiragino Sans", sans-serif; }
.artboard { width: 1920px; height: 1080px; padding: 100px 140px; background: var(--ground); color: var(--ink); }
.content { width: 100%; height: 100%; position: relative; }
.figure { position: absolute; left: -140px; top: -100px; width: 1920px; height: 1080px; }
</style>
<div class="artboard" data-artboard>
<div class="content" data-content>
<svg class="figure" width="1920" height="1080" viewBox="0 0 1920 1080" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="架空の問い合わせ15件ずつの応答時間分布。チャットの中央値は22分、メールは68分。メールの分布はより広い。">
<style>
.ground { fill: var(--ground); }
.ink { fill: var(--ink); }
.muted { fill: var(--muted); }
.rule { stroke: var(--rule); }
.title { font-size: 46px; font-weight: 700; letter-spacing: .01em; }
.subtitle { font-size: 22px; font-weight: 500; }
.axis-title { font-size: 22px; font-weight: 700; }
.tick { font-size: 20px; font-weight: 500; }
.category { font-size: 28px; font-weight: 700; }
.sample { font-size: 20px; font-weight: 400; }
.takeaway { font-size: 28px; font-weight: 500; }
.note { font-size: 20px; font-weight: 400; }
.violin-chat { fill: var(--series-1); fill-opacity: .9; stroke: var(--series-1); stroke-width: 3; }
.violin-email { fill: var(--series-2); fill-opacity: .9; stroke: var(--series-2); stroke-width: 3; }
.inner { stroke: var(--ground); stroke-width: 6; stroke-linecap: round; }
.median { fill: var(--ground); stroke: var(--ground); stroke-width: 2; }
.figure { font-family: "Zen Kaku Gothic New", "Hiragino Sans", sans-serif; }
</style>
<rect class="ground" width="1920" height="1080"/>
<text class="ink title" data-type="title" x="140" y="153">問い合わせの待ち時間 — メールは遅く、ばらつきも大きい</text>
<text class="muted subtitle" data-type="subtitle" x="140" y="201">窓口別の初回応答時間 / 各 15 件の架空データ / 縦位置は分、横幅は分布密度</text>
<line class="rule" x1="140" y1="238" x2="1780" y2="238" stroke-width="2"/>
<text class="ink axis-title" data-type="axisTitle" x="470" y="290" text-anchor="end">応答まで(分)</text>
<g class="rule" fill="none" stroke-width="1.5">
<line x1="510" y1="330" x2="1450" y2="330"/>
<line x1="510" y1="435" x2="1450" y2="435"/>
<line x1="510" y1="540" x2="1450" y2="540"/>
<line x1="510" y1="645" x2="1450" y2="645"/>
<line x1="510" y1="750" x2="1450" y2="750"/>
</g>
<g class="muted tick" text-anchor="end" dominant-baseline="central">
<text data-type="tick" x="480" y="330">120</text>
<text x="480" y="435">90</text>
<text x="480" y="540">60</text>
<text x="480" y="645">30</text>
<text x="480" y="750">0</text>
</g>
<!-- Shared kernel-density scale for two equal-sized fictional samples of 15 tickets each. -->
<path class="violin-chat" data-observations="8,13,17,18,19,21,22,22,23,24,26,28,30,35,52" data-bandwidth-minutes="11" d="M800 330 L800 347.5 L800 365 L800 382.5 L800 400 L799.99 417.5 L799.97 435 L799.86 452.5 L799.52 470 L798.61 487.5 L796.69 505 L793.45 522.5 L788.91 540 L783.07 557.5 L774.77 575 L761.13 592.5 L739.14 610 L709.25 627.5 L678.13 645 L656.94 662.5 L655 680 L673.54 697.5 L705.04 715 L738.46 732.5 L765.52 750 L834.48 750 L861.54 732.5 L894.96 715 L926.46 697.5 L945 680 L943.06 662.5 L921.87 645 L890.75 627.5 L860.86 610 L838.87 592.5 L825.23 575 L816.93 557.5 L811.09 540 L806.55 522.5 L803.31 505 L801.39 487.5 L800.48 470 L800.14 452.5 L800.03 435 L800.01 417.5 L800 400 L800 382.5 L800 365 L800 347.5 Z"/>
<path class="violin-email" data-observations="23,32,41,48,55,60,65,68,72,78,82,90,101,110,118" data-bandwidth-minutes="11" d="M1256.83 330 L1250.68 347.5 L1246.64 365 L1244.49 382.5 L1242.87 400 L1240.13 417.5 L1235.3 435 L1228.57 452.5 L1221.21 470 L1214.93 487.5 L1211.31 505 L1211.23 522.5 L1214.49 540 L1219.92 557.5 L1226.01 575 L1231.69 592.5 L1236.61 610 L1241.16 627.5 L1246.07 645 L1252.01 662.5 L1258.95 680 L1266.02 697.5 L1272.01 715 L1276.13 732.5 L1278.44 750 L1281.56 750 L1283.87 732.5 L1287.99 715 L1293.98 697.5 L1301.05 680 L1307.99 662.5 L1313.93 645 L1318.84 627.5 L1323.39 610 L1328.31 592.5 L1333.99 575 L1340.08 557.5 L1345.51 540 L1348.77 522.5 L1348.69 505 L1345.07 487.5 L1338.79 470 L1331.43 452.5 L1324.7 435 L1319.87 417.5 L1317.13 400 L1315.51 382.5 L1313.36 365 L1309.32 347.5 L1303.17 330 Z"/>
<!-- Inner quartile range and median are the familiar summary marks inside each distribution. -->
<line class="inner" x1="800" y1="652" x2="800" y2="690"/>
<circle class="median" cx="800" cy="673" r="8"/>
<line class="inner" x1="1280" y1="435" x2="1280" y2="582"/>
<circle class="median" cx="1280" cy="512" r="8"/>
<text class="ink category" data-type="category" x="800" y="810" text-anchor="middle">チャット</text>
<text class="muted sample" data-type="sample" x="800" y="846" text-anchor="middle">中央値 22 分</text>
<text class="ink category" x="1280" y="810" text-anchor="middle">メール</text>
<text class="muted sample" x="1280" y="846" text-anchor="middle">中央値 68 分</text>
<text class="ink takeaway" data-type="takeaway" x="960" y="926" text-anchor="middle">メールは中央値が約 3 倍。応答時間のばらつきも大きい</text>
<line class="rule" x1="140" y1="974" x2="1780" y2="974" stroke-width="1"/>
<text class="muted note" data-type="note" x="140" y="1013">架空の応答記録。幅は各窓口内の相対密度、白い点は中央値、白線は中央 50% の範囲。標本数は各 15 件。</text>
</svg>
</div>
</div>
/designs/violin-plot-support-wait-times/font.css — Not in Everything
/* dv-subset v2 — generated by scripts/subset-font.mjs. Do not edit.
* font Zen Kaku Gothic New 400;500;700
* chars 84 (e605e407aa166826)
*
* pattern.html の文字だけを含む部分集合。描画時に外部へ取りに行かないよう同梱する。
* 版の文字を変えたら取り直すこと — 忘れると足りない字が豆腐になる。
* その取り忘れは pattern-entries.test.ts が上の指紋で検出する。
*/
@font-face {
font-family: 'Zen Kaku Gothic New';
font-style: normal;
font-weight: 400;
font-display: block;
src: url(./font-0.woff2) format('woff2');
unicode-range: U+25, U+2f-33, U+35-36, U+38-39, U+2014, U+3001-3002, U+3044, U+304b-3050, U+305b-305c, U+3061-3062, U+3064-3067, U+306e-3070, U+307e, U+3082, U+3089, U+308f, U+3099, U+30bf-30c3, U+30c6-30c9, U+30e1, U+30e3, U+30eb, U+30fc, U+4e2d, U+4ef6, U+4f4d, U+500d, U+5024, U+5185, U+5206, U+521d, U+5225, U+53e3, U+5404, U+5408, U+554f, U+56de, U+56f2, U+5927, U+592e, U+5bc6, U+5bfe, U+5e03, U+5e45, U+5ea6, U+5f85, U+5fdc, U+6570, U+6642, U+672c, U+67b6, U+6a19, U+6a2a, U+70b9, U+767d, U+76f8, U+7a7a, U+7a93, U+7b54, U+7bc4, U+7d04, U+7dda, U+7e26, U+7f6e, U+8a18, U+9045, U+9332, U+9593, U+ff08-ff09;
}
@font-face {
font-family: 'Zen Kaku Gothic New';
font-style: normal;
font-weight: 500;
font-display: block;
src: url(./font-1.woff2) format('woff2');
unicode-range: U+25, U+2f-33, U+35-36, U+38-39, U+2014, U+3001-3002, U+3044, U+304b-3050, U+305b-305c, U+3061-3062, U+3064-3067, U+306e-3070, U+307e, U+3082, U+3089, U+308f, U+3099, U+30bf-30c3, U+30c6-30c9, U+30e1, U+30e3, U+30eb, U+30fc, U+4e2d, U+4ef6, U+4f4d, U+500d, U+5024, U+5185, U+5206, U+521d, U+5225, U+53e3, U+5404, U+5408, U+554f, U+56de, U+56f2, U+5927, U+592e, U+5bc6, U+5bfe, U+5e03, U+5e45, U+5ea6, U+5f85, U+5fdc, U+6570, U+6642, U+672c, U+67b6, U+6a19, U+6a2a, U+70b9, U+767d, U+76f8, U+7a7a, U+7a93, U+7b54, U+7bc4, U+7d04, U+7dda, U+7e26, U+7f6e, U+8a18, U+9045, U+9332, U+9593, U+ff08-ff09;
}
@font-face {
font-family: 'Zen Kaku Gothic New';
font-style: normal;
font-weight: 700;
font-display: block;
src: url(./font-2.woff2) format('woff2');
unicode-range: U+25, U+2f-33, U+35-36, U+38-39, U+2014, U+3001-3002, U+3044, U+304b-3050, U+305b-305c, U+3061-3062, U+3064-3067, U+306e-3070, U+307e, U+3082, U+3089, U+308f, U+3099, U+30bf-30c3, U+30c6-30c9, U+30e1, U+30e3, U+30eb, U+30fc, U+4e2d, U+4ef6, U+4f4d, U+500d, U+5024, U+5185, U+5206, U+521d, U+5225, U+53e3, U+5404, U+5408, U+554f, U+56de, U+56f2, U+5927, U+592e, U+5bc6, U+5bfe, U+5e03, U+5e45, U+5ea6, U+5f85, U+5fdc, U+6570, U+6642, U+672c, U+67b6, U+6a19, U+6a2a, U+70b9, U+767d, U+76f8, U+7a7a, U+7a93, U+7b54, U+7bc4, U+7d04, U+7dda, U+7e26, U+7f6e, U+8a18, U+9045, U+9332, U+9593, U+ff08-ff09;
}
初回応答時間は窓口ごとにどの値へ集中し、中央値とばらつきはどう違うか。
縦位置は応答時間、左右の幅はカーネル密度を表す。各窓口15件の架空標本から、帯域幅11分の カーネル密度を同じ横幅尺度で描く。白い点は中央値、白い縦線は中央50%の範囲である。 箱ひげ図が四分位の要約を主に示すのに対し、この図は分布の山と尾の形を読ませる。
チャットは20分台に集中し、メールはより長い時間へ広がっている。値は架空の応答記録であり、実際の窓口性能については主張しない。