BoxPlotSeries.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682
  1. /* *
  2. *
  3. * (c) 2010-2021 Torstein Honsi
  4. *
  5. * License: www.highcharts.com/license
  6. *
  7. * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
  8. *
  9. * */
  10. 'use strict';
  11. var __extends = (this && this.__extends) || (function () {
  12. var extendStatics = function (d, b) {
  13. extendStatics = Object.setPrototypeOf ||
  14. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  15. function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
  16. return extendStatics(d, b);
  17. };
  18. return function (d, b) {
  19. extendStatics(d, b);
  20. function __() { this.constructor = d; }
  21. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  22. };
  23. })();
  24. import ColumnSeries from '../Column/ColumnSeries.js';
  25. import H from '../../Core/Globals.js';
  26. var noop = H.noop;
  27. import palette from '../../Core/Color/Palette.js';
  28. import SeriesRegistry from '../../Core/Series/SeriesRegistry.js';
  29. import U from '../../Core/Utilities.js';
  30. var extend = U.extend, merge = U.merge, pick = U.pick;
  31. /**
  32. * The boxplot series type.
  33. *
  34. * @private
  35. * @class
  36. * @name Highcharts.seriesTypes#boxplot
  37. *
  38. * @augments Highcharts.Series
  39. */
  40. /* *
  41. *
  42. * Class
  43. *
  44. * */
  45. var BoxPlotSeries = /** @class */ (function (_super) {
  46. __extends(BoxPlotSeries, _super);
  47. function BoxPlotSeries() {
  48. /* *
  49. *
  50. * Static Properties
  51. *
  52. * */
  53. var _this = _super !== null && _super.apply(this, arguments) || this;
  54. /* *
  55. *
  56. * Properties
  57. *
  58. * */
  59. _this.data = void 0;
  60. _this.options = void 0;
  61. _this.points = void 0;
  62. return _this;
  63. }
  64. /* *
  65. *
  66. * Functions
  67. *
  68. * */
  69. // Get presentational attributes
  70. BoxPlotSeries.prototype.pointAttribs = function () {
  71. // No attributes should be set on point.graphic which is the group
  72. return {};
  73. };
  74. // Translate data points from raw values x and y to plotX and plotY
  75. BoxPlotSeries.prototype.translate = function () {
  76. var series = this, yAxis = series.yAxis, pointArrayMap = series.pointArrayMap;
  77. _super.prototype.translate.apply(series);
  78. // do the translation on each point dimension
  79. series.points.forEach(function (point) {
  80. pointArrayMap.forEach(function (key) {
  81. if (point[key] !== null) {
  82. point[key + 'Plot'] = yAxis.translate(point[key], 0, 1, 0, 1);
  83. }
  84. });
  85. point.plotHigh = point.highPlot; // For data label validation
  86. });
  87. };
  88. // eslint-disable-next-line valid-jsdoc
  89. /**
  90. * Draw the data points
  91. * @private
  92. */
  93. BoxPlotSeries.prototype.drawPoints = function () {
  94. var series = this, points = series.points, options = series.options, chart = series.chart, renderer = chart.renderer, q1Plot, q3Plot, highPlot, lowPlot, medianPlot, medianPath, crispCorr, crispX = 0, boxPath, width, left, right, halfWidth,
  95. // error bar inherits this series type but doesn't do quartiles
  96. doQuartiles = series.doQuartiles !== false, pointWiskerLength, whiskerLength = series.options.whiskerLength;
  97. points.forEach(function (point) {
  98. var graphic = point.graphic, verb = graphic ? 'animate' : 'attr', shapeArgs = point.shapeArgs, boxAttr = {}, stemAttr = {}, whiskersAttr = {}, medianAttr = {}, color = point.color || series.color;
  99. if (typeof point.plotY !== 'undefined') {
  100. // crisp vector coordinates
  101. width = Math.round(shapeArgs.width);
  102. left = Math.floor(shapeArgs.x);
  103. right = left + width;
  104. halfWidth = Math.round(width / 2);
  105. q1Plot = Math.floor(doQuartiles ? point.q1Plot : point.lowPlot);
  106. q3Plot = Math.floor(doQuartiles ? point.q3Plot : point.lowPlot);
  107. highPlot = Math.floor(point.highPlot);
  108. lowPlot = Math.floor(point.lowPlot);
  109. if (!graphic) {
  110. point.graphic = graphic = renderer.g('point')
  111. .add(series.group);
  112. point.stem = renderer.path()
  113. .addClass('highcharts-boxplot-stem')
  114. .add(graphic);
  115. if (whiskerLength) {
  116. point.whiskers = renderer.path()
  117. .addClass('highcharts-boxplot-whisker')
  118. .add(graphic);
  119. }
  120. if (doQuartiles) {
  121. point.box = renderer.path(boxPath)
  122. .addClass('highcharts-boxplot-box')
  123. .add(graphic);
  124. }
  125. point.medianShape = renderer.path(medianPath)
  126. .addClass('highcharts-boxplot-median')
  127. .add(graphic);
  128. }
  129. if (!chart.styledMode) {
  130. // Stem attributes
  131. stemAttr.stroke =
  132. point.stemColor || options.stemColor || color;
  133. stemAttr['stroke-width'] = pick(point.stemWidth, options.stemWidth, options.lineWidth);
  134. stemAttr.dashstyle = (point.stemDashStyle ||
  135. options.stemDashStyle ||
  136. options.dashStyle);
  137. point.stem.attr(stemAttr);
  138. // Whiskers attributes
  139. if (whiskerLength) {
  140. whiskersAttr.stroke = (point.whiskerColor ||
  141. options.whiskerColor ||
  142. color);
  143. whiskersAttr['stroke-width'] = pick(point.whiskerWidth, options.whiskerWidth, options.lineWidth);
  144. whiskersAttr.dashstyle = (point.whiskerDashStyle ||
  145. options.whiskerDashStyle ||
  146. options.dashStyle);
  147. point.whiskers.attr(whiskersAttr);
  148. }
  149. if (doQuartiles) {
  150. boxAttr.fill = (point.fillColor ||
  151. options.fillColor ||
  152. color);
  153. boxAttr.stroke = options.lineColor || color;
  154. boxAttr['stroke-width'] = options.lineWidth || 0;
  155. boxAttr.dashstyle = (point.boxDashStyle ||
  156. options.boxDashStyle ||
  157. options.dashStyle);
  158. point.box.attr(boxAttr);
  159. }
  160. // Median attributes
  161. medianAttr.stroke = (point.medianColor ||
  162. options.medianColor ||
  163. color);
  164. medianAttr['stroke-width'] = pick(point.medianWidth, options.medianWidth, options.lineWidth);
  165. medianAttr.dashstyle = (point.medianDashStyle ||
  166. options.medianDashStyle ||
  167. options.dashStyle);
  168. point.medianShape.attr(medianAttr);
  169. }
  170. var d = void 0;
  171. // The stem
  172. crispCorr = (point.stem.strokeWidth() % 2) / 2;
  173. crispX = left + halfWidth + crispCorr;
  174. d = [
  175. // stem up
  176. ['M', crispX, q3Plot],
  177. ['L', crispX, highPlot],
  178. // stem down
  179. ['M', crispX, q1Plot],
  180. ['L', crispX, lowPlot]
  181. ];
  182. point.stem[verb]({ d: d });
  183. // The box
  184. if (doQuartiles) {
  185. crispCorr = (point.box.strokeWidth() % 2) / 2;
  186. q1Plot = Math.floor(q1Plot) + crispCorr;
  187. q3Plot = Math.floor(q3Plot) + crispCorr;
  188. left += crispCorr;
  189. right += crispCorr;
  190. d = [
  191. ['M', left, q3Plot],
  192. ['L', left, q1Plot],
  193. ['L', right, q1Plot],
  194. ['L', right, q3Plot],
  195. ['L', left, q3Plot],
  196. ['Z']
  197. ];
  198. point.box[verb]({ d: d });
  199. }
  200. // The whiskers
  201. if (whiskerLength) {
  202. crispCorr = (point.whiskers.strokeWidth() % 2) / 2;
  203. highPlot = highPlot + crispCorr;
  204. lowPlot = lowPlot + crispCorr;
  205. pointWiskerLength = (/%$/).test(whiskerLength) ?
  206. halfWidth * parseFloat(whiskerLength) / 100 :
  207. whiskerLength / 2;
  208. d = [
  209. // High whisker
  210. ['M', crispX - pointWiskerLength, highPlot],
  211. ['L', crispX + pointWiskerLength, highPlot],
  212. // Low whisker
  213. ['M', crispX - pointWiskerLength, lowPlot],
  214. ['L', crispX + pointWiskerLength, lowPlot]
  215. ];
  216. point.whiskers[verb]({ d: d });
  217. }
  218. // The median
  219. medianPlot = Math.round(point.medianPlot);
  220. crispCorr = (point.medianShape.strokeWidth() % 2) / 2;
  221. medianPlot = medianPlot + crispCorr;
  222. d = [
  223. ['M', left, medianPlot],
  224. ['L', right, medianPlot]
  225. ];
  226. point.medianShape[verb]({ d: d });
  227. }
  228. });
  229. };
  230. // return a plain array for speedy calculation
  231. BoxPlotSeries.prototype.toYData = function (point) {
  232. return [point.low, point.q1, point.median, point.q3, point.high];
  233. };
  234. /**
  235. * A box plot is a convenient way of depicting groups of data through their
  236. * five-number summaries: the smallest observation (sample minimum), lower
  237. * quartile (Q1), median (Q2), upper quartile (Q3), and largest observation
  238. * (sample maximum).
  239. *
  240. * @sample highcharts/demo/box-plot/
  241. * Box plot
  242. *
  243. * @extends plotOptions.column
  244. * @excluding borderColor, borderRadius, borderWidth, groupZPadding,
  245. * states, boostThreshold, boostBlending
  246. * @product highcharts
  247. * @requires highcharts-more
  248. * @optionparent plotOptions.boxplot
  249. */
  250. BoxPlotSeries.defaultOptions = merge(ColumnSeries.defaultOptions, {
  251. threshold: null,
  252. tooltip: {
  253. pointFormat: '<span style="color:{point.color}">\u25CF</span> <b> ' +
  254. '{series.name}</b><br/>' +
  255. 'Maximum: {point.high}<br/>' +
  256. 'Upper quartile: {point.q3}<br/>' +
  257. 'Median: {point.median}<br/>' +
  258. 'Lower quartile: {point.q1}<br/>' +
  259. 'Minimum: {point.low}<br/>'
  260. },
  261. /**
  262. * The length of the whiskers, the horizontal lines marking low and
  263. * high values. It can be a numerical pixel value, or a percentage
  264. * value of the box width. Set `0` to disable whiskers.
  265. *
  266. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  267. * True by default
  268. *
  269. * @type {number|string}
  270. * @since 3.0
  271. * @product highcharts
  272. */
  273. whiskerLength: '50%',
  274. /**
  275. * The fill color of the box.
  276. *
  277. * In styled mode, the fill color can be set with the
  278. * `.highcharts-boxplot-box` class.
  279. *
  280. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  281. * Box plot styling
  282. *
  283. * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
  284. * @default #ffffff
  285. * @since 3.0
  286. * @product highcharts
  287. */
  288. fillColor: palette.backgroundColor,
  289. /**
  290. * The width of the line surrounding the box. If any of
  291. * [stemWidth](#plotOptions.boxplot.stemWidth),
  292. * [medianWidth](#plotOptions.boxplot.medianWidth)
  293. * or [whiskerWidth](#plotOptions.boxplot.whiskerWidth) are `null`,
  294. * the lineWidth also applies to these lines.
  295. *
  296. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  297. * Box plot styling
  298. * @sample {highcharts} highcharts/plotoptions/error-bar-styling/
  299. * Error bar styling
  300. *
  301. * @since 3.0
  302. * @product highcharts
  303. */
  304. lineWidth: 1,
  305. /**
  306. * The color of the median line. If `undefined`, the general series
  307. * color applies.
  308. *
  309. * In styled mode, the median stroke width can be set with the
  310. * `.highcharts-boxplot-median` class.
  311. *
  312. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  313. * Box plot styling
  314. * @sample {highcharts} highcharts/css/boxplot/
  315. * Box plot in styled mode
  316. * @sample {highcharts} highcharts/plotoptions/error-bar-styling/
  317. * Error bar styling
  318. *
  319. * @type {Highcharts.ColorString|Highcharts.GradientColorObject}
  320. * @since 3.0
  321. * @product highcharts
  322. * @apioption plotOptions.boxplot.medianColor
  323. */
  324. /**
  325. * The pixel width of the median line. If `null`, the
  326. * [lineWidth](#plotOptions.boxplot.lineWidth) is used.
  327. *
  328. * In styled mode, the median stroke width can be set with the
  329. * `.highcharts-boxplot-median` class.
  330. *
  331. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  332. * Box plot styling
  333. * @sample {highcharts} highcharts/css/boxplot/
  334. * Box plot in styled mode
  335. *
  336. * @type {number|null}
  337. * @since 3.0
  338. * @product highcharts
  339. */
  340. medianWidth: 2,
  341. /*
  342. // States are not working and are removed from docs.
  343. // Refer to: #2340
  344. states: {
  345. hover: {
  346. brightness: -0.3
  347. }
  348. },
  349. /**
  350. * The color of the stem, the vertical line extending from the box to
  351. * the whiskers. If `undefined`, the series color is used.
  352. *
  353. * In styled mode, the stem stroke can be set with the
  354. * `.highcharts-boxplot-stem` class.
  355. *
  356. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  357. * Box plot styling
  358. * @sample {highcharts} highcharts/css/boxplot/
  359. * Box plot in styled mode
  360. * @sample {highcharts} highcharts/plotoptions/error-bar-styling/
  361. * Error bar styling
  362. *
  363. * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
  364. * @since 3.0
  365. * @product highcharts
  366. * @apioption plotOptions.boxplot.stemColor
  367. */
  368. /**
  369. * The dash style of the box.
  370. *
  371. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  372. * Box plot styling
  373. * @sample {highcharts} highcharts/css/boxplot/
  374. * Box plot in styled mode
  375. *
  376. * @type {Highcharts.DashStyleValue}
  377. * @default Solid
  378. * @since 8.1.0
  379. * @product highcharts
  380. * @apioption plotOptions.boxplot.boxDashStyle
  381. */
  382. /**
  383. * The dash style of the median.
  384. *
  385. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  386. * Box plot styling
  387. * @sample {highcharts} highcharts/css/boxplot/
  388. * Box plot in styled mode
  389. *
  390. * @type {Highcharts.DashStyleValue}
  391. * @default Solid
  392. * @since 8.1.0
  393. * @product highcharts
  394. * @apioption plotOptions.boxplot.medianDashStyle
  395. */
  396. /**
  397. * The dash style of the stem, the vertical line extending from the
  398. * box to the whiskers.
  399. *
  400. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  401. * Box plot styling
  402. * @sample {highcharts} highcharts/css/boxplot/
  403. * Box plot in styled mode
  404. * @sample {highcharts} highcharts/plotoptions/error-bar-styling/
  405. * Error bar styling
  406. *
  407. * @type {Highcharts.DashStyleValue}
  408. * @default Solid
  409. * @since 3.0
  410. * @product highcharts
  411. * @apioption plotOptions.boxplot.stemDashStyle
  412. */
  413. /**
  414. * The dash style of the whiskers.
  415. *
  416. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  417. * Box plot styling
  418. * @sample {highcharts} highcharts/css/boxplot/
  419. * Box plot in styled mode
  420. *
  421. * @type {Highcharts.DashStyleValue}
  422. * @default Solid
  423. * @since 8.1.0
  424. * @product highcharts
  425. * @apioption plotOptions.boxplot.whiskerDashStyle
  426. */
  427. /**
  428. * The width of the stem, the vertical line extending from the box to
  429. * the whiskers. If `undefined`, the width is inherited from the
  430. * [lineWidth](#plotOptions.boxplot.lineWidth) option.
  431. *
  432. * In styled mode, the stem stroke width can be set with the
  433. * `.highcharts-boxplot-stem` class.
  434. *
  435. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  436. * Box plot styling
  437. * @sample {highcharts} highcharts/css/boxplot/
  438. * Box plot in styled mode
  439. * @sample {highcharts} highcharts/plotoptions/error-bar-styling/
  440. * Error bar styling
  441. *
  442. * @type {number}
  443. * @since 3.0
  444. * @product highcharts
  445. * @apioption plotOptions.boxplot.stemWidth
  446. */
  447. /**
  448. * @default high
  449. * @apioption plotOptions.boxplot.colorKey
  450. */
  451. /**
  452. * The color of the whiskers, the horizontal lines marking low and high
  453. * values. When `undefined`, the general series color is used.
  454. *
  455. * In styled mode, the whisker stroke can be set with the
  456. * `.highcharts-boxplot-whisker` class .
  457. *
  458. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  459. * Box plot styling
  460. * @sample {highcharts} highcharts/css/boxplot/
  461. * Box plot in styled mode
  462. *
  463. * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
  464. * @since 3.0
  465. * @product highcharts
  466. * @apioption plotOptions.boxplot.whiskerColor
  467. */
  468. /**
  469. * The line width of the whiskers, the horizontal lines marking low and
  470. * high values. When `undefined`, the general
  471. * [lineWidth](#plotOptions.boxplot.lineWidth) applies.
  472. *
  473. * In styled mode, the whisker stroke width can be set with the
  474. * `.highcharts-boxplot-whisker` class.
  475. *
  476. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  477. * Box plot styling
  478. * @sample {highcharts} highcharts/css/boxplot/
  479. * Box plot in styled mode
  480. *
  481. * @since 3.0
  482. * @product highcharts
  483. */
  484. whiskerWidth: 2
  485. });
  486. return BoxPlotSeries;
  487. }(ColumnSeries));
  488. extend(BoxPlotSeries.prototype, {
  489. // array point configs are mapped to this
  490. pointArrayMap: ['low', 'q1', 'median', 'q3', 'high'],
  491. // defines the top of the tracker
  492. pointValKey: 'high',
  493. // Disable data labels for box plot
  494. drawDataLabels: noop,
  495. setStackedPoints: noop // #3890
  496. });
  497. /* *
  498. *
  499. * Registry
  500. *
  501. * */
  502. SeriesRegistry.registerSeriesType('boxplot', BoxPlotSeries);
  503. /* *
  504. *
  505. * Default Export
  506. *
  507. * */
  508. export default BoxPlotSeries;
  509. /* *
  510. *
  511. * API Options
  512. *
  513. * */
  514. /**
  515. * A `boxplot` series. If the [type](#series.boxplot.type) option is
  516. * not specified, it is inherited from [chart.type](#chart.type).
  517. *
  518. * @extends series,plotOptions.boxplot
  519. * @excluding dataParser, dataURL, marker, stack, stacking, states,
  520. * boostThreshold, boostBlending
  521. * @product highcharts
  522. * @requires highcharts-more
  523. * @apioption series.boxplot
  524. */
  525. /**
  526. * An array of data points for the series. For the `boxplot` series
  527. * type, points can be given in the following ways:
  528. *
  529. * 1. An array of arrays with 6 or 5 values. In this case, the values correspond
  530. * to `x,low,q1,median,q3,high`. If the first value is a string, it is
  531. * applied as the name of the point, and the `x` value is inferred. The `x`
  532. * value can also be omitted, in which case the inner arrays should be of
  533. * length 5. Then the `x` value is automatically calculated, either starting
  534. * at 0 and incremented by 1, or from `pointStart` and `pointInterval` given
  535. * in the series options.
  536. * ```js
  537. * data: [
  538. * [0, 3, 0, 10, 3, 5],
  539. * [1, 7, 8, 7, 2, 9],
  540. * [2, 6, 9, 5, 1, 3]
  541. * ]
  542. * ```
  543. *
  544. * 2. An array of objects with named values. The following snippet shows only a
  545. * few settings, see the complete options set below. If the total number of
  546. * data points exceeds the series'
  547. * [turboThreshold](#series.boxplot.turboThreshold), this option is not
  548. * available.
  549. * ```js
  550. * data: [{
  551. * x: 1,
  552. * low: 4,
  553. * q1: 9,
  554. * median: 9,
  555. * q3: 1,
  556. * high: 10,
  557. * name: "Point2",
  558. * color: "#00FF00"
  559. * }, {
  560. * x: 1,
  561. * low: 5,
  562. * q1: 7,
  563. * median: 3,
  564. * q3: 6,
  565. * high: 2,
  566. * name: "Point1",
  567. * color: "#FF00FF"
  568. * }]
  569. * ```
  570. *
  571. * @sample {highcharts} highcharts/series/data-array-of-arrays/
  572. * Arrays of numeric x and y
  573. * @sample {highcharts} highcharts/series/data-array-of-arrays-datetime/
  574. * Arrays of datetime x and y
  575. * @sample {highcharts} highcharts/series/data-array-of-name-value/
  576. * Arrays of point.name and y
  577. * @sample {highcharts} highcharts/series/data-array-of-objects/
  578. * Config objects
  579. *
  580. * @type {Array<Array<(number|string),number,number,number,number>|Array<(number|string),number,number,number,number,number>|*>}
  581. * @extends series.line.data
  582. * @excluding marker
  583. * @product highcharts
  584. * @apioption series.boxplot.data
  585. */
  586. /**
  587. * The `high` value for each data point, signifying the highest value
  588. * in the sample set. The top whisker is drawn here.
  589. *
  590. * @type {number}
  591. * @product highcharts
  592. * @apioption series.boxplot.data.high
  593. */
  594. /**
  595. * The `low` value for each data point, signifying the lowest value
  596. * in the sample set. The bottom whisker is drawn here.
  597. *
  598. * @type {number}
  599. * @product highcharts
  600. * @apioption series.boxplot.data.low
  601. */
  602. /**
  603. * The median for each data point. This is drawn as a line through the
  604. * middle area of the box.
  605. *
  606. * @type {number}
  607. * @product highcharts
  608. * @apioption series.boxplot.data.median
  609. */
  610. /**
  611. * The lower quartile for each data point. This is the bottom of the
  612. * box.
  613. *
  614. * @type {number}
  615. * @product highcharts
  616. * @apioption series.boxplot.data.q1
  617. */
  618. /**
  619. * The higher quartile for each data point. This is the top of the box.
  620. *
  621. * @type {number}
  622. * @product highcharts
  623. * @apioption series.boxplot.data.q3
  624. */
  625. /**
  626. * The dash style of the box.
  627. *
  628. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  629. * Box plot styling
  630. * @sample {highcharts} highcharts/css/boxplot/
  631. * Box plot in styled mode
  632. *
  633. * @type {Highcharts.DashStyleValue}
  634. * @default Solid
  635. * @since 8.1.0
  636. * @product highcharts
  637. * @apioption series.boxplot.data.boxDashStyle
  638. */
  639. /**
  640. * The dash style of the median.
  641. *
  642. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  643. * Box plot styling
  644. * @sample {highcharts} highcharts/css/boxplot/
  645. * Box plot in styled mode
  646. *
  647. * @type {Highcharts.DashStyleValue}
  648. * @default Solid
  649. * @since 8.1.0
  650. * @product highcharts
  651. * @apioption series.boxplot.data.medianDashStyle
  652. */
  653. /**
  654. * The dash style of the stem.
  655. *
  656. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  657. * Box plot styling
  658. * @sample {highcharts} highcharts/css/boxplot/
  659. * Box plot in styled mode
  660. *
  661. * @type {Highcharts.DashStyleValue}
  662. * @default Solid
  663. * @since 8.1.0
  664. * @product highcharts
  665. * @apioption series.boxplot.data.stemDashStyle
  666. */
  667. /**
  668. * The dash style of the whiskers.
  669. *
  670. * @sample {highcharts} highcharts/plotoptions/box-plot-styling/
  671. * Box plot styling
  672. * @sample {highcharts} highcharts/css/boxplot/
  673. * Box plot in styled mode
  674. *
  675. * @type {Highcharts.DashStyleValue}
  676. * @default Solid
  677. * @since 8.1.0
  678. * @product highcharts
  679. * @apioption series.boxplot.data.whiskerDashStyle
  680. */
  681. ''; // adds doclets above to transpiled file