Rectangle mark
The vgg-rectangle mark is used to plot rectangular elements.
<vgg-rectangle
:x="row.year"
:y1="row.population"
:y2="0"
:w="2.5"
fill="#c66366"
/>
Properties
A vgg-rectangle can contain the following position properties.
Positioning
| Prop | Required | Types | Default | Description | Unit(s) |
|---|---|---|---|---|---|
| x1 | depends | [Number, String, Date] | undefined | Left x coordinate | Local coordinates |
| x2 | depends | [Number, String, Date] | undefined | Right x coordinate | Local coordinates |
| y1 | depends | [Number, String, Date] | undefined | Bottom y coordinate | Local coordinates |
| y2 | depends | [Number, String, Date] | undefined | Top y coordinate | Local coordinates |
| x | depends | [Number, String, Date] | undefined | Central x coordinate | Local coordinates |
| y | depends | [Number, String, Date] | undefined | Central y coordinate | Local coordinates |
| w | depends | Number | undefined | Width | Local coordinates |
| h | depends | Number | undefined | Height | Local coordinates |
Allowed combinations of positioning props
The positioning properties of the Rectangle can only be used in certain combinations.
| Combination | Explanation |
|---|---|
x1 + x2 | x1 refers to x-coordinate of the left side of the rectangle, x2 refers to x-coordinate of the right side of the rectangle. |
x + w | x is the center of the rectangle in the x-dimension, w is the width. Here, x1 = x - w / 2, and x2 = x + w / 2. |
x1 + w | x2 = x1 + w |
x2 + w | x1 = x2 - w |
y1 + y2 | y1 refers to y-coordinate of the bottom side of the rectangle, y2 refers to y-coordinate of the top side of the rectangle. |
y + h | y is the center of the rectangle in the x-dimension, h is the width. Here, y1 = y - h / 2, and y2 = y + h / 2. |
y1 + h | y2 = y1 + h |
y2 + h | y1 = y2 - h |
Other aesthetics
| Prop | Required | Types | Default | Description | Unit(s) |
|---|---|---|---|---|---|
| stroke | false | String | undefined | Stroke color | Named color, hex, rgb, hsl |
| stroke-width | false | Number | undefined | Stroke width | Screen pixel |
| stroke-opacity | false | Number | undefined | Stroke opacity | Number between 0 to 1 |
| fill | false | String | '#000000' | Fill color | Named color, hex, rgb, hsl |
| fill-opacity | false | Number | undefined | Fill opacity | Number between 0 and 1 |
| opacity | false | Number | undefined | Mark opacity | Number between 0 and 1 |
These are analogous to the CSS properties of the same names.
Other properties
| Prop | Required | Types | Default | Description |
|---|---|---|---|---|
| interpolate | false | Boolean | undefined | Interpolate between points (when using non-cartesian coordinate systems) |
| transition | false | Number | 0 | Time taken to animate changes to each line when data changes |
Events
| Event | Description |
|---|---|
| click | Triggered when user clicks on mark |
| hover | Triggered when user hovers over mark |
| mouseover | Triggered when user's mouse is above mark |
| mouseout | Triggered when user's mouse leaves mark |
| select | Triggered when mark is selected |
| deselect | Triggered when mark is removed from selection |
For more information on these events, see the Interactivity documentation.
Usage
Positioning
There is one caveat related to w (and h). x1, x2 and x can
be specified in the parent Section's coordinate system, even if those coordinates are
categorical or temporal. w, however, does not take categorical or temporal data.
Instead, the coordinate system of the first parent component that has a quantitative
coordinate system will be used. For example:
<vgg-graphic :width="500" :height="500">
<vgg-section
:x1="50"
:x2="450"
:y1="50"
:y2="450"
:scale-x="['a', 'b', 'c', 'd']"
:scale-y="[0, 100]"
>
<vgg-rectangle
:x="'b'"
:w="100"
:y1="20"
:y2="80"
/>
</vgg-section>
</vgg-graphic>
The w value of 100 here is in the coordinate system of the vgg-graphic,
which is the first parent that has a quantitative coordinate system.