From 33114780651f99ea58fb213a28e7cd7a1a6e0bd2 Mon Sep 17 00:00:00 2001 From: Shumpei Shiina Date: Sun, 30 Jan 2022 19:04:09 +0900 Subject: [PATCH 1/5] Add pattern fill for scatter filled area --- src/components/drawing/index.js | 52 ++++++------- src/components/legend/style.js | 16 ++-- src/snapshot/tosvg.js | 39 ++++------ src/traces/scatter/attributes.js | 2 + src/traces/scatter/defaults.js | 2 + src/traces/scatter/plot.js | 8 +- src/traces/scatter/style.js | 2 +- test/image/baselines/scatter_fill_pattern.png | Bin 0 -> 74018 bytes test/image/mocks/scatter_fill_pattern.json | 69 ++++++++++++++++++ 9 files changed, 128 insertions(+), 62 deletions(-) create mode 100644 test/image/baselines/scatter_fill_pattern.png create mode 100644 test/image/mocks/scatter_fill_pattern.json diff --git a/src/components/drawing/index.js b/src/components/drawing/index.js index 6acdfac46a3..57b6f2133d4 100644 --- a/src/components/drawing/index.js +++ b/src/components/drawing/index.js @@ -177,24 +177,42 @@ drawing.dashStyle = function(dash, lineWidth) { return dash; }; +function setFillStyle(sel, trace, gd) { + var markerPattern = trace.fillpattern; + var patternShape = markerPattern && drawing.getPatternAttr(markerPattern.shape, 0, ''); + if(patternShape) { + var patternBGColor = drawing.getPatternAttr(markerPattern.bgcolor, 0, null); + var patternFGColor = drawing.getPatternAttr(markerPattern.fgcolor, 0, null); + var patternFGOpacity = markerPattern.fgopacity; + var patternSize = drawing.getPatternAttr(markerPattern.size, 0, 8); + var patternSolidity = drawing.getPatternAttr(markerPattern.solidity, 0, 0.3); + var patternID = trace.uid; + drawing.pattern(sel, 'point', gd, patternID, + patternShape, patternSize, patternSolidity, + undefined, markerPattern.fillmode, + patternBGColor, patternFGColor, patternFGOpacity + ); + } else if(trace.fillcolor) { + sel.call(Color.fill, trace.fillcolor); + } +} + // Same as fillGroupStyle, except in this case the selection may be a transition -drawing.singleFillStyle = function(sel) { +drawing.singleFillStyle = function(sel, gd) { var node = d3.select(sel.node()); var data = node.data(); - var fillcolor = (((data[0] || [])[0] || {}).trace || {}).fillcolor; - if(fillcolor) { - sel.call(Color.fill, fillcolor); - } + var trace = ((data[0] || [])[0] || {}).trace || {}; + setFillStyle(sel, trace, gd); }; -drawing.fillGroupStyle = function(s) { +drawing.fillGroupStyle = function(s, gd) { s.style('stroke-width', 0) .each(function(d) { var shape = d3.select(this); // N.B. 'd' won't be a calcdata item when // fill !== 'none' on a segment-less and marker-less trace if(d[0].trace) { - shape.call(Color.fill, d[0].trace.fillcolor); + setFillStyle(shape, d[0].trace, gd); } }); }; @@ -347,12 +365,7 @@ drawing.gradient = function(sel, gd, gradientID, type, colorscale, prop) { sel.style(prop, getFullUrl(fullID, gd)) .style(prop + '-opacity', null); - var className2query = function(s) { - return '.' + s.attr('class').replace(/\s/g, '.'); - }; - var k = className2query(d3.select(sel.node().parentNode)) + - '>' + className2query(sel); - fullLayout._gradientUrlQueryParts[k] = 1; + sel.classed('gradient_filled', true); }; /** @@ -559,11 +572,6 @@ drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity, .style('fill-opacity', null); sel.classed('pattern_filled', true); - var className2query = function(s) { - return '.' + s.attr('class').replace(/\s/g, '.'); - }; - var k = className2query(d3.select(sel.node().parentNode)) + '>.pattern_filled'; - fullLayout._patternUrlQueryParts[k] = 1; }; /* @@ -578,10 +586,6 @@ drawing.initGradients = function(gd) { var gradientsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'gradients'); gradientsGroup.selectAll('linearGradient,radialGradient').remove(); - - // initialize stash of query parts filled in Drawing.gradient, - // used to fix URL strings during image exports - fullLayout._gradientUrlQueryParts = {}; }; drawing.initPatterns = function(gd) { @@ -589,10 +593,6 @@ drawing.initPatterns = function(gd) { var patternsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'patterns'); patternsGroup.selectAll('pattern').remove(); - - // initialize stash of query parts filled in Drawing.pattern, - // used to fix URL strings during image exports - fullLayout._patternUrlQueryParts = {}; }; drawing.getPatternAttr = function(mp, i, dflt) { diff --git a/src/components/legend/style.js b/src/components/legend/style.js index 9ca9c194af1..72bc7f67c13 100644 --- a/src/components/legend/style.js +++ b/src/components/legend/style.js @@ -111,12 +111,16 @@ module.exports = function style(s, gd, legend) { var colorscale = cOpts.colorscale; var reversescale = cOpts.reversescale; - var fillGradient = function(s) { + var fillStyle = function(s) { if(s.size()) { - var gradientID = 'legendfill-' + trace.uid; - Drawing.gradient(s, gd, gradientID, - getGradientDirection(reversescale), - colorscale, 'fill'); + if(showFill) { + Drawing.fillGroupStyle(s, gd); + } else { + var gradientID = 'legendfill-' + trace.uid; + Drawing.gradient(s, gd, gradientID, + getGradientDirection(reversescale), + colorscale, 'fill'); + } } }; @@ -145,7 +149,7 @@ module.exports = function style(s, gd, legend) { fill.enter().append('path').classed('js-fill', true); fill.exit().remove(); fill.attr('d', pathStart + 'h' + itemWidth + 'v6h-' + itemWidth + 'z') - .call(showFill ? Drawing.fillGroupStyle : fillGradient); + .call(fillStyle); if(showLine || showGradientLine) { var lw = boundLineWidth(undefined, trace.line, MAX_LINE_WIDTH, CST_LINE_WIDTH); diff --git a/src/snapshot/tosvg.js b/src/snapshot/tosvg.js index 34ebfdc5f8d..aebd6814f6a 100644 --- a/src/snapshot/tosvg.js +++ b/src/snapshot/tosvg.js @@ -33,7 +33,7 @@ module.exports = function toSVG(gd, format, scale) { var toppaper = fullLayout._toppaper; var width = fullLayout.width; var height = fullLayout.height; - var i, k; + var i; // make background color a rect in the svg, then revert after scraping // all other alterations have been dealt with by properly preparing the svg @@ -106,32 +106,21 @@ module.exports = function toSVG(gd, format, scale) { } }); - var queryParts = []; - if(fullLayout._gradientUrlQueryParts) { - for(k in fullLayout._gradientUrlQueryParts) queryParts.push(k); - } - - if(fullLayout._patternUrlQueryParts) { - for(k in fullLayout._patternUrlQueryParts) queryParts.push(k); - } + svg.selectAll('.gradient_filled,.pattern_filled').each(function() { + var pt = d3.select(this); - if(queryParts.length) { - svg.selectAll(queryParts.join(',')).each(function() { - var pt = d3.select(this); - - // similar to font family styles above, - // we must remove " after the SVG DOM has been serialized - var fill = this.style.fill; - if(fill && fill.indexOf('url(') !== -1) { - pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB)); - } + // similar to font family styles above, + // we must remove " after the SVG DOM has been serialized + var fill = this.style.fill; + if(fill && fill.indexOf('url(') !== -1) { + pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB)); + } - var stroke = this.style.stroke; - if(stroke && stroke.indexOf('url(') !== -1) { - pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB)); - } - }); - } + var stroke = this.style.stroke; + if(stroke && stroke.indexOf('url(') !== -1) { + pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB)); + } + }); if(format === 'pdf' || format === 'eps') { // these formats make the extra line MathJax adds around symbols look super thick in some cases diff --git a/src/traces/scatter/attributes.js b/src/traces/scatter/attributes.js index 634104692df..ad59a800fb1 100644 --- a/src/traces/scatter/attributes.js +++ b/src/traces/scatter/attributes.js @@ -6,6 +6,7 @@ var hovertemplateAttrs = require('../../plots/template_attributes').hovertemplat var colorScaleAttrs = require('../../components/colorscale/attributes'); var fontAttrs = require('../../plots/font_attributes'); var dash = require('../../components/drawing/attributes').dash; +var pattern = require('../../components/drawing/attributes').pattern; var Drawing = require('../../components/drawing'); var constants = require('./constants'); @@ -363,6 +364,7 @@ module.exports = { 'marker color, or marker line color, whichever is available.' ].join(' ') }, + fillpattern: pattern, marker: extendFlat({ symbol: { valType: 'enumerated', diff --git a/src/traces/scatter/defaults.js b/src/traces/scatter/defaults.js index 0450df06fa9..0d47c52c216 100644 --- a/src/traces/scatter/defaults.js +++ b/src/traces/scatter/defaults.js @@ -14,6 +14,7 @@ var handleLineDefaults = require('./line_defaults'); var handleLineShapeDefaults = require('./line_shape_defaults'); var handleTextDefaults = require('./text_defaults'); var handleFillColorDefaults = require('./fillcolor_defaults'); +var coercePattern = require('../../lib').coercePattern; module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { function coerce(attr, dflt) { @@ -67,6 +68,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout if(traceOut.fill !== 'none') { handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce); if(!subTypes.hasLines(traceOut)) handleLineShapeDefaults(traceIn, traceOut, coerce); + coercePattern(coerce, 'fillpattern', traceOut.fillcolor, false); } var lineColor = (traceOut.line || {}).color; diff --git a/src/traces/scatter/plot.js b/src/traces/scatter/plot.js index 88671f53481..7fb3e6c3cc9 100644 --- a/src/traces/scatter/plot.js +++ b/src/traces/scatter/plot.js @@ -304,11 +304,11 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition // the points on the axes are the first two points. Otherwise // animations get a little crazy if the number of points changes. transition(ownFillEl3).attr('d', 'M' + pt1 + 'L' + pt0 + 'L' + fullpath.substr(1)) - .call(Drawing.singleFillStyle); + .call(Drawing.singleFillStyle, gd); } else { // fill to self: just join the path to itself transition(ownFillEl3).attr('d', fullpath + 'Z') - .call(Drawing.singleFillStyle); + .call(Drawing.singleFillStyle, gd); } } } else if(tonext) { @@ -320,7 +320,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition // This makes strange results if one path is *not* entirely // inside the other, but then that is a strange usage. transition(tonext).attr('d', fullpath + 'Z' + prevRevpath + 'Z') - .call(Drawing.singleFillStyle); + .call(Drawing.singleFillStyle, gd); } else { // tonextx/y: for now just connect endpoints with lines. This is // the correct behavior if the endpoints are at the same value of @@ -328,7 +328,7 @@ function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transition // things depending on whether the new endpoint projects onto the // existing curve or off the end of it transition(tonext).attr('d', fullpath + 'L' + prevRevpath.substr(1) + 'Z') - .call(Drawing.singleFillStyle); + .call(Drawing.singleFillStyle, gd); } trace._polygons = trace._polygons.concat(prevPolygons); } else { diff --git a/src/traces/scatter/style.js b/src/traces/scatter/style.js index 64bfac1416e..ad3fd5a217b 100644 --- a/src/traces/scatter/style.js +++ b/src/traces/scatter/style.js @@ -27,7 +27,7 @@ function style(gd) { .call(Drawing.lineGroupStyle); s.selectAll('g.trace path.js-fill') - .call(Drawing.fillGroupStyle); + .call(Drawing.fillGroupStyle, gd); Registry.getComponentMethod('errorbars', 'style')(s); } diff --git a/test/image/baselines/scatter_fill_pattern.png b/test/image/baselines/scatter_fill_pattern.png new file mode 100644 index 0000000000000000000000000000000000000000..36546821c82fe4ccace4c60b29e75c79af06f31b GIT binary patch literal 74018 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�#A#>nr;6^cO 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 Date: Sun, 30 Jan 2022 19:17:38 +0900 Subject: [PATCH 2/5] Add draftlogs/6101_add.md --- draftlogs/6101_add.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/6101_add.md diff --git a/draftlogs/6101_add.md b/draftlogs/6101_add.md new file mode 100644 index 00000000000..c3d17aad427 --- /dev/null +++ b/draftlogs/6101_add.md @@ -0,0 +1 @@ + - Add pattern fill for scatter filled area From 143f8f1771b9e4f8d34a8390d8460bb36b5e74e0 Mon Sep 17 00:00:00 2001 From: Shumpei Shiina Date: Mon, 7 Feb 2022 19:34:38 +0900 Subject: [PATCH 3/5] rename scatter_fill_pattern to z-scatter_fill_pattern in image test --- ..._fill_pattern.png => z-scatter_fill_pattern.png} | Bin ...ill_pattern.json => z-scatter_fill_pattern.json} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename test/image/baselines/{scatter_fill_pattern.png => z-scatter_fill_pattern.png} (100%) rename test/image/mocks/{scatter_fill_pattern.json => z-scatter_fill_pattern.json} (100%) diff --git a/test/image/baselines/scatter_fill_pattern.png b/test/image/baselines/z-scatter_fill_pattern.png similarity index 100% rename from test/image/baselines/scatter_fill_pattern.png rename to test/image/baselines/z-scatter_fill_pattern.png diff --git a/test/image/mocks/scatter_fill_pattern.json b/test/image/mocks/z-scatter_fill_pattern.json similarity index 100% rename from test/image/mocks/scatter_fill_pattern.json rename to test/image/mocks/z-scatter_fill_pattern.json From 22e88c1e8a4fa3e5658152e3bdaa28c338dff5c3 Mon Sep 17 00:00:00 2001 From: Shumpei Shiina Date: Mon, 7 Feb 2022 19:35:02 +0900 Subject: [PATCH 4/5] update plot-schema diff --- test/plot-schema.json | 93 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/test/plot-schema.json b/test/plot-schema.json index a811b800c7c..ddc3f619bef 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -42073,6 +42073,99 @@ "editType": "style", "valType": "color" }, + "fillpattern": { + "bgcolor": { + "arrayOk": true, + "description": "When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background.", + "editType": "style", + "valType": "color" + }, + "bgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.", + "editType": "none", + "valType": "string" + }, + "description": "Sets the pattern within the marker.", + "editType": "style", + "fgcolor": { + "arrayOk": true, + "description": "When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`.", + "editType": "style", + "valType": "color" + }, + "fgcolorsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.", + "editType": "none", + "valType": "string" + }, + "fgopacity": { + "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.", + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "fillmode": { + "description": "Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`.", + "dflt": "replace", + "editType": "style", + "valType": "enumerated", + "values": [ + "replace", + "overlay" + ] + }, + "role": "object", + "shape": { + "arrayOk": true, + "description": "Sets the shape of the pattern fill. By default, no pattern is used for filling the area.", + "dflt": "", + "editType": "style", + "valType": "enumerated", + "values": [ + "", + "/", + "\\", + "x", + "-", + "|", + "+", + "." + ] + }, + "shapesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `shape`.", + "editType": "none", + "valType": "string" + }, + "size": { + "arrayOk": true, + "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.", + "dflt": 8, + "editType": "style", + "min": 0, + "valType": "number" + }, + "sizesrc": { + "description": "Sets the source reference on Chart Studio Cloud for `size`.", + "editType": "none", + "valType": "string" + }, + "solidity": { + "arrayOk": true, + "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.", + "dflt": 0.3, + "editType": "style", + "max": 1, + "min": 0, + "valType": "number" + }, + "soliditysrc": { + "description": "Sets the source reference on Chart Studio Cloud for `solidity`.", + "editType": "none", + "valType": "string" + } + }, "groupnorm": { "description": "Only relevant when `stackgroup` is used, and only the first `groupnorm` found in the `stackgroup` will be used - including if `visible` is *legendonly* but not if it is `false`. Sets the normalization for the sum of this `stackgroup`. With *fraction*, the value of each trace at each location is divided by the sum of all trace values at that location. *percent* is the same but multiplied by 100 to show percentages. If there are multiple subplots, or multiple `stackgroup`s on one subplot, each will be normalized within its own set.", "dflt": "", From 8ca0955e81a7b48ecb6f3791a6c777621ce1b07c Mon Sep 17 00:00:00 2001 From: Shumpei Shiina Date: Mon, 7 Feb 2022 20:37:52 +0900 Subject: [PATCH 5/5] remove fill classes when redrawing --- src/components/drawing/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/drawing/index.js b/src/components/drawing/index.js index 57b6f2133d4..ca3ac9bca02 100644 --- a/src/components/drawing/index.js +++ b/src/components/drawing/index.js @@ -586,6 +586,8 @@ drawing.initGradients = function(gd) { var gradientsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'gradients'); gradientsGroup.selectAll('linearGradient,radialGradient').remove(); + + d3.select(gd).selectAll('.gradient_filled').classed('gradient_filled', false); }; drawing.initPatterns = function(gd) { @@ -593,6 +595,8 @@ drawing.initPatterns = function(gd) { var patternsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'patterns'); patternsGroup.selectAll('pattern').remove(); + + d3.select(gd).selectAll('.pattern_filled').classed('pattern_filled', false); }; drawing.getPatternAttr = function(mp, i, dflt) {