Use plot title as default filename for "Download plot" button#7828
Conversation
|
Nice! Plotly.newPlot(gd, [{y: [1, 2]}], {title: {text: "."}});Right now it returns |
| // so ignore the title entirely if it contains LaTeX markup | ||
| if (!svgTextUtils.matchTex(plotTitle)) { | ||
| potentialFilename = Lib.slugify(plotTitle, 40); | ||
| } |
There was a problem hiding this comment.
You may also consider adding the subtitle.text if present.
There was a problem hiding this comment.
I'm open to that, but I'm having trouble thinking of a real-world example where adding the subtitle would result in a better filename.
I suppose maybe in the case where you have multiple plots with the same title but different subtitles, that could differentiate the filenames.
Do you have any particular examples in mind?
There was a problem hiding this comment.
Here is a common example where subtitle could be used to provide the time stamp of the graph.
Plotly.newPlot(gd, [{y: [1, 2]}], {title: {text: "Hourly Temp. (°C) Forecast - Montréal", subtitle: {text: "9 June 2026"}}});There was a problem hiding this comment.
That's a positive example, if we add the subtitle we would get hourly-temp-c-forecast-montreal-9-june-2.png instead of hourly-temp-c-forecast-montreal.png. Though I also think the filename with just the title is fine.
However I also see cases where adding the subtitle gives a worse result, for example this plot in the docs where we would end up with life-expectancy-life-expectancy-by-europ.png rather than life-expectancy.png.
I've updated the logic to fall back to the subtitle in cases where the title is missing or consists of MathJax, which I think might be the best of both worlds.
Good catch!! That's a wild edge case, I guess I would have expected it to return I suppose |
@archmoj Updated — I added |
| .replace(UNICODE_REPLACEMENT_CHAR_REGEX, '') // Drop Unicode replacement chars left by previous step | ||
| .replace(HTML_TAGS_REGEX, ' ') // Remove < > tags, such as <br> (replace with space) | ||
| .replace(FORBIDDEN_CHARS_REGEX, '') // Remove forbidden filename characters | ||
| .toLowerCase() // Lowercase everything |
There was a problem hiding this comment.
I'm not sure about lowering the case.
There was a problem hiding this comment.
I'm going to keep the lowercasing for now, since it's consistent with the lowercasing in newplot.png and also matches the way most URLs are lowercased. However open to changing it in the future depending on feedback.
Co-authored-by: Cameron DeCoster <cameron.decoster@gmail.com>
…icode classes) from filenames
camdecoster
left a comment
There was a problem hiding this comment.
Looks good. I made one small suggestion, but feel free to ignore it.
Co-authored-by: Cameron DeCoster <cameron.decoster@gmail.com>
Addresses #5124
layout.title.textas default download filename when neitherconfig.toImageButtonOptions.filenameorgd.fnare defined.ihbarfracdpsidt-v-frac-hbar22mnabla2p.png(fall back to subtitle if title is MathJax)_fullLayout(so that template values are respected) while ignoring the "Click to add title" placeholderplot-imagerather thannewplotSteps for testing
a.
scatter_marker_line_dash(normal example, filename should match)b.
bar-like_traces_tozero(title is defined in template, filename should match)c.
automargin-small-width(no title, should default toplot-image.png)d.
mathjax(MathJax title, should default toplot-image.png)