-
-
Notifications
You must be signed in to change notification settings - Fork 2k
Add quiver trace type for vector field visualization #7710
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: v4.0
Are you sure you want to change the base?
Changes from all commits
7c74abe
100bd88
3f24d4a
ec6a266
68a7608
1d8d74e
3dd208d
ec5f850
5534667
5302654
9d8fa14
7c2055f
00638de
df33638
a1c40a6
4d9f656
452ba9d
3c42def
36cab21
b8e2aa8
13bb96a
d4ad7ba
7556092
fa078c2
9cb41db
7f634ed
37c2a8d
6d613d7
37a6cd2
c40a5e0
fcb5701
73f0338
e46104b
48e4e7e
a2799e2
3344864
94dc00d
2e214c7
f3789e6
dd71b94
eba15eb
5d3e198
813ab71
0a76daf
c694a02
601ca45
86030c3
d92fd9b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| - Add `quiver` trace type to visualize vector fields using arrows [[#7710](https://github.com/plotly/plotly.js/pull/7710)] |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| 'use strict'; | ||
|
|
||
| module.exports = require('../src/traces/quiver'); |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,212 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'use strict'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| var baseAttrs = require('../../plots/attributes'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| var hovertemplateAttrs = require('../../plots/template_attributes').hovertemplateAttrs; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| var fontAttrs = require('../../plots/font_attributes'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| var axisHoverFormat = require('../../plots/cartesian/axis_format_attributes').axisHoverFormat; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| var extendFlat = require('../../lib/extend').extendFlat; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| var colorScaleAttrs = require('../../components/colorscale/attributes'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| var dash = require('../../components/drawing/attributes').dash; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| var annotationAttrs = require('../../components/annotations/attributes'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| var scatterAttrs = require('../scatter/attributes'); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| var attrs = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| x: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'data_array', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'calc+clearAxisTypes', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| anim: true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Sets the x coordinates of the arrow locations.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| x0: scatterAttrs.x0, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| dx: scatterAttrs.dx, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| y: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'data_array', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'calc+clearAxisTypes', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| anim: true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Sets the y coordinates of the arrow locations.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| y0: scatterAttrs.y0, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| dy: scatterAttrs.dy, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| u: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'data_array', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'calc', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| anim: true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Sets the x components of the arrow vectors.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| v: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'data_array', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'calc', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| anim: true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Sets the y components of the arrow vectors.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sizemode: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'enumerated', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| values: ['scaled', 'absolute', 'raw'], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'calc', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| dflt: 'scaled', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'Determines whether `sizeref` is set as a *scaled* (unitless) scalar', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| '(normalized by the max u/v norm in the vector field), as an *absolute*', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'value (in the same units as the vector field), or *raw* to use the', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'raw vector lengths.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ].join(' ') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sizeref: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'number', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| min: 0, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'calc', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'Adjusts the arrow size scaling.', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'The arrow length is determined by the vector norm multiplied by `sizeref`,', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'optionally normalized when `sizemode` is *scaled*.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ].join(' ') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| anchor: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'enumerated', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| values: ['tip', 'tail', 'center'], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| dflt: 'tail', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'calc', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'Sets the arrows\' anchor with respect to their (x,y) positions.', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'Use *tail* to place (x,y) at the base, *tip* to place (x,y) at the head,', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'or *center* to center the arrow on (x,y).' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ].join(' ') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| hoverdistance: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'number', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| min: -1, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| dflt: 20, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'calc', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Maximum distance (in pixels) to look for nearby arrows on hover.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| xhoverformat: axisHoverFormat('x'), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| yhoverformat: axisHoverFormat('y'), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uhoverformat: axisHoverFormat('u', 'noDate'), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| vhoverformat: axisHoverFormat('v', 'noDate'), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Text and labels | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| text: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'data_array', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'calc', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| anim: true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Sets text elements associated with each (x,y) pair.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| textposition: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'enumerated', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| values: [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'top left', 'top center', 'top right', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'middle left', 'middle center', 'middle right', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'bottom left', 'bottom center', 'bottom right' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| dflt: 'middle center', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'calc', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Sets the positions of the `text` elements with respects to the (x,y) coordinates.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Text font | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| textfont: fontAttrs({ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'calc', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| colorEditType: 'style', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| arrayOk: true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Sets the text font.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+89
to
+112
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Preference for reusing the scatter attributes here if possible. Can use Of course if the whole attribute definition really does need to be different, it's OK to redefine here.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Marker: color, colorscale, arrowhead sizing, and line styling for arrows | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| marker: extendFlat( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| arrowsize: extendFlat({}, annotationAttrs.arrowsize, { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'calc', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: [ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'Sets the size of the arrow head relative to `marker.line.width`.', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 'A value of 1 (default) gives a head about 3x as wide as the line.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ].join(' ') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| line: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| width: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'number', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| min: 0, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| dflt: 1, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'style', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Sets the width (in px) of the arrow lines.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| dash: dash, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'style' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'calc' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| colorScaleAttrs('marker', { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| showScaleDflt: true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editTypeOverride: 'calc' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Selection and styling | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| selected: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| line: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| color: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'color', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'style', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Sets the line color of selected points.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| width: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'number', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| min: 0, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'style', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Sets the line width of selected points.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'style' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| textfont: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| color: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'color', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'style', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Sets the text font color of selected points, applied only when a selection exists.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'style' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'style' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| unselected: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| line: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| color: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'color', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'style', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Sets the line color of unselected points.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| width: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'number', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| min: 0, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'style', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Sets the line width of unselected points.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'style' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| textfont: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| color: { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| valType: 'color', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'style', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Sets the text font color of unselected points, applied only when a selection exists.' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'style' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| editType: 'style' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Extend with base attributes (includes hoverinfo, etc.), keeping the | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // quiver-specific attributes layered on top of the shared base attributes. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| attrs = extendFlat({}, baseAttrs, attrs); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Add hoverinfo with proper flags for quiver | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // We need to create a new object to avoid mutating the shared base attributes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| attrs.hoverinfo = extendFlat({}, baseAttrs.hoverinfo, { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| flags: ['x', 'y', 'u', 'v', 'text', 'name'], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| dflt: 'all' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Add hovertemplate | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| attrs.hovertemplate = extendFlat({}, hovertemplateAttrs({}, { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| keys: ['x', 'y', 'u', 'v', 'text', 'name'] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| })); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+202
to
+210
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @degzhaus Is there a reason why these are added afterwards, rather than defined in the main body of |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| module.exports = attrs; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No other trace type has a
hoverdistanceattribute (it's a layout property) so I'd suggest to remove it unless there's a good reason to define it at the trace level here.