Venn Diagrams
Note: See our Venn Diagram Gallery for inspiration on all the different Venn diagram possibilities.
Venn Diagram Chart Type
To get started, add a type attribute to your chart object. Set the value to venn. A diagram chart with two sets (or circles) looks like this:
{
type: 'venn',
series: [
{
values: [100],
join: [15]
},
{
values: [100],
join: [15]
}
]
}
Data
We support two or three sets (circles) per chart. First, create a series array of objects. In the array, each object corresponds to a set (or circle).
Each set requires a values array, where you'll provide the value of the circle, and a join array, where you'll provide the value of the joined or intersecting area between the current and next circle. For Set 1, the join is in relation to Set 2; for Set 2, the join is in relation to Set 3; and for Set 3, the join is in relation to Set 1.
See the chart below, which contains three sets:
{
type: 'venn',
series: [
{ //Set 1
values: [100],
join: [15]
},
{ //Set 2
values: [100],
join: [15]
},
{ //Set 3
values: [100],
join: [15]
}
]
}
Chart-Specific Properties
Value boxes are an integral part of venn diagram charts. Utilizing tokens and section-specific objects, you can provide text for each set, the joined area between each set, and the shared area between all three sets (only applicable for three set).
Value Boxes
What distinguishes venn diagram value boxes from other chart types at ZingChart is that in addition to the text provided for each set, you can also provide text for each joined area and (if applicable) the shared area between all three sets.
Start with the value-box object, which can be placed in the plot and/or specific series objects depending on whether you are applying the changes to all sets or to a specific set.
Note: Learn more about value boxes with our Value Boxes Tutorial. For a list of available attributes, see our Value Boxes JSON Attributes/Syntax page.
Sets
In your value-box object, add a text attribute. Provide your desired text and tokens inside a string. This attribute corresponds to the value box for each set/circle.
{
type: 'venn',
plot: {
valueBox: {
text: '%t' //Value box text for sets.
}
},
series: [
{
values: [100],
join: [15],
text: 'Set One'
},
]
}
joined Object
In your value-box object, create a joined object. Place your joined text attribute and other styling attributes in this object. Remember that the joined area is where two sets intersect.
{
type: 'venn',
plot: {
valueBox: {
text: '',
joined: { //Value box text and styling for joined areas.
text: 'Joined'
}
}
},
}
shared Object
The shared object is only applicable when creating diagrams that contain three sets. (With two-set diagrams, the joined area between Set 1 and 2 essentially acts as both the joined and shared area.)
In your value-box object, create a shared object. Your shared text attribute and any styling attributes will be placed in this object.
{
type: 'venn',
plot: {
valueBox: {
text: '',
shared: { //Text and styling for shared area, if applicable.
text: 'Shared'
}
}
},
}
Tokens
With value boxes, you can incorporate tokens to display your set, joined, and shared (if applicable) values. The set/circle values are represented by the standard %v token. Joined values are represented by the %joined-value token. The shared value, if applicable, is represented by the %shared-value token.
Note: For more information on tokens, see our ZingChart Tokens Tutorial.
{
type: 'venn',
plot: {
valueBox: {
text: '%t:<br>%v',
joined: {
text: 'Joined:<br>%joined-value'
},
shared: {
text: 'Shared:<br>%shared-value'
}
}
},
}
Further Customization
Further customize your charts by incorporating styling, tooltips, and/or a legend.
Chart Styling
You can modify the appearance of your chart by styling the circles and value boxes, as well as adding titles. Use styling attributes such as background-color, border-color, border-width, alpha, and more.
To apply changes to a specific set, place the attributes inside the applicable series object. For global application, place the attributes inside the plot object. To style your value boxes, place the relevant attributes inside the value-box object.
To include a title or subtitle, add a title or subtitle object. Use the text attribute to provide the relevant text, and any desired styling attributes.
Note: Browse our plot / series JSON Configuration page for more styling attribute options.
{
type: 'venn',
title: {
text: 'Peanut Butter & Jelly Sandwiches'
},
subtitle: {
text: 'Have two mandatory ingredients: '
},
plot: {
valueBox: {
text: '%t',
fontFamily: 'Tahoma',
fontColor: '#ffffe5',
fontSize: 16,
fontWeight: 'normal',
fontStyle: 'italic',
joined: {
text: 'PB<br>&J',
fontWeight: 'bold',
fontStyle: 'normal'
}
}
},
series: [
{
values: [100],
join: [15],
text: 'Peanut Butter',
backgroundColor: '#331a00',
alpha: 0.9,
borderColor: '#663300',
borderWidth: '2px'
},
{
values: [100],
join: [15],
text: 'Jelly',
backgroundColor: '#330066',
alpha: 0.9,
borderColor: '#663300',
borderWidth: '2px'
}
]
}
Tooltips
You can customize your tooltips to display your choice of tokens and text. Add a tooltip object to the plot object. To specify your tooltip text, add a text attribute.
You can add any desired styling attributes to the object as well. This chart type has several venn diagram-specific tokens. In addition to the standard %v (to show set/circle values) and %t (to show set/circle text), we have %joined-value (to show the joined value between two sets) and %shared-value (to show the shared value between three sets, if applicable).
Specifically relevant to tooltips, we also have %paired-node-value and %paired-plot-text tokens to show, when hovering over a particular set, the value or text of the next set. With Set 1, its pair is 2; with Set 2, its pair is 3; and with Set 3, its pair is 1.
Note: See the ZingChart Tokens Tutorial page for more on tokens. For more on tooltips, see the tooltip JSON Attributes/Syntax page.
{
plot: {
tooltip: {
text: '%t holds a value of %v.<br><br>It is paired with %paired-plot-text, which also holds a value of %paired-node-value.<br>Their joined value is %joined-value.<br><br>And the shared value for this is %shared-value.'
},
}
}
Legend
Legends allow you to provide additional information as to what each circle represents. In your chart object, add a legend object. You can change the placement of your legend by using the align (left, center, or right) and vertical-align (top, middle, or bottom) attributes.
You can also style the markers that represent each series by including a marker object.
Note: For more information, read our Tutorial on Legends or browse our Legend JSON Attributes/Syntax page.
{
legend: {
align: 'right', //'left', 'center', or 'right'
verticalAlign: 'top', //'top', 'middle', 'bottom'
marker: {
type: 'circle',
borderColor: 'black'
}
},
}