ベン図 / オイラー図

ベン図とオイラー図とは

ベン図は重なり合う円を使って、集合の集まりにおけるすべての可能な論理的関係を示します——各交差が実際に要素を含むかどうかにかかわらず。オイラー図はより一般的な形式で:円は実際に関係が存在する場合にのみ描かれ、ある集合が別の集合に完全に含まれる場合はネストされた円として示され、2つの互いに素な集合はまったく重なりません。John Venn が1880年に固定重なりの形式を導入し、Leonhard Euler が1760年代に一般的な集合包含の形式を記述しました。

教育者は集合論を教えるために使用し、データアナリストはセグメント間のオーディエンス重複を示すために使用し(メールリスト ∩ モバイルユーザー ∩ 有料購読者)、生物学・言語学・医学の研究者は分類学的または概念的な階層をマッピングするためにオイラー図を使用します。Schematex は1つの DSL で4つの一般的な使用パターンをすべてサポートしています——宣言的なカウント・要素の列挙・領域ラベル・オイラーサブセット/互いに素/重複関係——1つの図で混在させることもできます。背景については ベン図のウィキペディア記事オイラー図 を参照してください。

venn·§
↘ preview
100%
Customer Segments — Q3 2025 Venn/Euler diagram "Customer Segments — Q3 2025": 3 sets, 7 regions. Customer Segments — Q3 2025 Set Email subscribers Set Paid users Set Mobile app users Email subscribers Paid users Mobile app users 1840 920 2100 650 12400 3200 8700
UTF-8 · LF · 11 lines · 318 chars✓ parsed·16.0 ms·3.6 KB SVG

1. 最初のベン図

最小限の実用的な図:2つの集合、1つの重複、2つの排他的領域。

venn·§
↘ preview
100%
Support channels Venn/Euler diagram "Support channels": 2 sets, 3 regions. Support channels Set Email support Set Live chat Email support Live chat 320 1450 890
UTF-8 · LF · 6 lines · 140 chars✓ parsed·3.4 ms·2.3 KB SVG

4つのルールで使用例の80%をカバーできます:

  1. venn で始め、必要に応じて引用符付きのタイトルを続けます。
  2. 集合set ID "Label" で宣言します——id は内部で使用され、ラベルが図に表示されます。
  3. A & B : value で交差に、A only : value で排他的領域に値を割り当てます。
  4. config: 行で外観を設定します;図のモード(venn vs euler)は明示的に設定するか auto のままにします。

コメントは独立した行で # から始める必要があります。


2. 集合

集合の宣言は図に1つの円を作成します。

set ID "Label" [color: "#hex"]
部分必須備考
IDYes[A-Za-z][A-Za-z0-9_-]* にマッチする必要がある
"Label"Yes円に表示される引用符付き文字列
[color: "#hex"]Noこの集合のフィルカラーをオーバーライド

集合は領域または関係行で参照される前に宣言する必要があります。

venn·§
↘ preview
100%
Programming paradigms Venn/Euler diagram "Programming paradigms": 3 sets, 7 regions. Programming paradigms Set Object-Oriented Set Functional Set Logic Object-Oriented Functional Logic 180 45 90 12 620 340 95
UTF-8 · LF · 11 lines · 264 chars✓ parsed·2.8 ms·3.3 KB SVG

3. 領域

領域は交差または排他的エリアに値を割り当てます。4つの DSL モードを1つの図で混在させることができます。

3.1 宣言モード——カウントとパーセンテージ

名前付き領域に数値またはパーセンテージを割り当てます。領域キーは、交差の場合は & で区切られた集合 id のリスト、排他的部分の場合は ID only です。

A & B : 320          # 整数カウント
A & B & C : 45       # 3方向交差
A only : 1450        # 他のすべての集合を除いた A
A & B : 18.5%        # パーセンテージ値
venn·§
↘ preview
100%
Market research Venn/Euler diagram "Market research": 3 sets, 7 regions. Market research Set Awareness Set Consideration Set Conversion Awareness Consideration Conversion 3400 890 210 150 18200 2100 540
UTF-8 · LF · 11 lines · 318 chars✓ parsed·4.3 ms·3.6 KB SVG

3.2 領域ラベル(テキスト)

region キーワードプレフィックスを使用し、数値の代わりに引用符付き文字列を割り当てます。文字列は領域内にレンダリングされます。

region A & B : "Nurture"
region B & C : "Convert"
region A & B & C : "Loyal customer"
venn·§
↘ preview
100%
Go-to-market funnel Venn/Euler diagram "Go-to-market funnel": 3 sets, 5 regions. Go-to-market funnel Set Awareness Set Consideration Set Purchase Awareness Consideration Purchase Nurture Convert Cold audience Loyal Direct buyers
UTF-8 · LF · 9 lines · 281 chars✓ parsed·1.8 ms·3.0 KB SVG

3.3 列挙モード——要素リスト

各集合の実際の要素をリストします。Schematex はすべての交差を自動的に計算します。

ID = { element1, element2, element3 }

要素はカンマ区切りの裸の単語または引用符付き文字列です。列挙集合には明示的な set 宣言は不要です——宣言は暗黙的です。

venn·§
↘ preview
100%
Full-stack team skills Venn/Euler diagram "Full-stack team skills": 3 sets, 5 regions. Full-stack team skills Set Frontend Set Backend Set DevOps Frontend Backend DevOps React, CSS, Webpack Node.js TypeScript, Jest Docker, Kubernetes, Terraform PostgreSQL, Redis
UTF-8 · LF · 4 lines · 206 chars✓ parsed·2.3 ms·3.4 KB SVG

4. オイラー関係

オイラー関係は、ある集合が別の集合のサブセットであること、2つの集合が完全に互いに素であること、または単に重複することを表す構造的な包含または分離を表現します。set で宣言済みの集合 id を参照する必要があります。

from subset to    # from は to の内部に完全にある(別名:「in」)
from in to        # subset のエイリアス
from disjoint to  # from と to は重複しない
from overlap to   # from と to は部分的に重複する(明示的——関連のない集合のデフォルト)
venn·§
↘ preview
100%
Biology taxonomy Venn/Euler diagram "Biology taxonomy": 5 sets, 0 regions. Biology taxonomy Set Animals Set Vertebrates Set Mammals Set Birds Set Fish Animals Vertebrates Mammals Birds Fish
UTF-8 · LF · 13 lines · 299 chars✓ parsed·10.1 ms·3.1 KB SVG
キーワードエイリアス意味
subsetinfromto に完全に含まれる
disjointfromto は交差しない
overlapfromto は交差するが、どちらかが他方を含むわけではない

5. 設定

config: 行でダイアグラムの動作を調整します。各行は独立した行です。

設定キーデフォルト効果
diagramvenneulerautoautoベン(すべての円を固定)またはオイラー(サブセットネスト)を強制。auto はオイラー関係の存在から推定。
proportionaltruefalsefalse領域カウント値に比例して円の面積をスケーリング
showCountstruefalseautoカウントラベルを常に / 決して表示しない。auto はカウントが提供された場合に表示。
showPercenttruefalsefalse各領域の値を全体の合計のパーセンテージとして表示
palettedefaultbrandmonochromedefault集合のカラーパレット(集合ごとの color: でオーバーライド)
blendModemultiplyscreennonemultiply重なったフィルカラーがどのようにブレンドするか

設定はヘッダー行にインラインでも記述できます:venn "Title" [proportional: true, showPercent: true]

venn "Segment overlap"
config: proportional = true
config: showPercent = true
config: blendMode = screen

レイアウト選択:

  • layout vennconfig: diagram = venn の別形式(同じようにパース)。
  • layout eulerconfig: diagram = euler の別形式。
  • layout autoconfig: diagram = auto の別形式。

6. ラベルとコメント

  • タイトル: venn "My diagram" — 最初の行のみ。
  • 集合ラベル: set A "Email subscribers"set 行の引用符付き文字列。
  • 領域値: : の後に割り当てられた整数・パーセンテージ・引用符付き文字列・要素リスト。
  • コメント: # を行頭に記述(先頭のホワイトスペースの後)。

7. 予約語とエスケープ

行頭の予約語: venn(ヘッダー)、setconfig:layoutregion

領域キーの予約演算子: &(交差)、only(排他的領域)。

オイラー関係キーワード: subsetindisjointoverlap ——集合 id として使用不可。

ID ルール: [A-Za-z][A-Za-z0-9_-]* にマッチする必要があります。スペースを含むラベルは引用符付きの "Label" フィールドに記述します。


8. よくある間違い

記述した内容パーサーの反応修正方法
set A …set B … の前の A & B : 320VennParseError: unknown set id "A" in region keyset で集合を宣言してから領域行で参照する
set dogs … の前の dogs subset mammalsVennParseError: unknown set "dogs" in relation先に集合を宣言し、次にオイラー関係を記述する
set A Email subscribers(スペースを含む引用符なしラベル)パーサーエラー——ラベルは引用符付き文字列であることが期待される引用符で囲む:set A "Email subscribers"
A & B = 320(コロンの代わりにイコール)領域パターンにマッチせず;パースエラーコロンを使用:A & B : 320
Frontend = { React TypeScript }(カンマなし)React TypeScript が1つの要素として扱われるカンマで区切る:Frontend = { React, TypeScript }
config: mode = vennmode は認識されたキーではない(キーは diagramconfig: diagram = venn を使用
列挙集合と明示的な A & B : 領域の混在列挙の自動導出は regions.length === 0 の場合のみ実行1つの図で1つのスタイルを使うか、すべての領域を明示的に追加する

9. 文法(EBNF)

document       = header (blank | comment | config | layout-stmt | set-decl | enum-decl | euler-rel | region)*

header         = "venn" ( ":"? WS quoted-string )? ( WS "[" config-props "]" )? NEWLINE
quoted-string  = '"' any-char-but-quote* '"'

config         = "config" WS ":" WS config-key WS "=" WS config-value NEWLINE
config-key     = "diagram" | "proportional" | "palette" | "blendMode" | "showCounts" | "showPercent"

layout-stmt    = "layout" WS ( "venn" | "euler" | "auto" ) NEWLINE

set-decl       = "set" WS id WS quoted-string ( WS "[" set-props "]" )? NEWLINE
set-props      = "color:" quoted-hex | "fill:" quoted-hex

enum-decl      = id WS "=" WS "{" element-list "}" NEWLINE
element-list   = element ( "," element )*
element        = quoted-string | bare-word

euler-rel      = id WS euler-op WS id NEWLINE
euler-op       = "subset" | "in" | "disjoint" | "overlap"

region         = "region"? WS region-key WS ":" WS region-value NEWLINE
region-key     = id WS "only"
               | id ( WS "&" WS id )+
region-value   = integer | percent | quoted-string | "[" element-list "]"

percent        = number "%"
id             = [A-Za-z] [A-Za-z0-9_-]*
comment        = "#" any NEWLINE

権威ある情報源:src/diagrams/venn/parser.ts。パーサーとの相違がある場合は、パーサーが優先されます——Issue を作成してください。


10. ロードマップ

計画中 — まだパース不可。 現在生成された DSL ではこれらを使用しないでください;パーサーが拒否または無視します。

  • 3方向と N 方向のオイラーネスト — レンダラーは現在ベンモードで最大3集合をサポート;複雑な包含を持つより大きなオイラー図はまだ完全にはレイアウトされていない。
  • fill: カラーエイリアスsetfill: プロパティはパーサーが受け付けます(color: のエイリアス)が、レンダラーは現在 color: のみ使用。
  • 領域の label: — 別個のラベル vs 値のための region A & B [label: "Core"] 構文。
  • 面積比例オイラーproportional: true は現在ベンモードにのみ影響;オイラー包含レイアウトはフラグを無視。
  • and キーワードA & B : 120 のエイリアスとしての自然言語 A and B : 120

これらのどれかが早急に必要な場合は GitHub Issues でトラックしてください。


関連する例

サンプルギャラリーからすぐに使えるシナリオ:

venn·§ Venn (1880)
Customer Segments — Q3 2025 Venn/Euler diagram "Customer Segments — Q3 2025": 3 sets, 7 regions. Customer Segments — Q3 2025 Set Email subscribers Set Paid users Set Mobile app users Email subscribers Paid users Mobile app users 1840 920 2100 650 12400 3200 8700
Customer segment overlap
Three-set Venn showing email subscriber, paid-user, and mobile-app-user overlap with counts for every region — useful for lifecycle marketing planning.
saas
venn·§ Venn (1880)
Programming Paradigms Venn/Euler diagram "Programming Paradigms": 3 sets, 7 regions. Programming Paradigms Set Object-Oriented Set Functional Set Logic Object-Oriented Functional Logic 180 45 90 12 620 340 95
Programming paradigm overlap
Venn diagram showing the intersection of object-oriented, functional, and logic programming paradigms with language counts — a teaching aid for CS curricula.
education

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.