@cdc/chart 4.25.3 → 4.25.5-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdcchart.js +36051 -36995
- package/index.html +2 -1
- package/package.json +22 -27
- package/src/CdcChartComponent.tsx +10 -10
- package/src/_stories/Chart.CI.stories.tsx +10 -0
- package/src/_stories/Chart.DynamicSeries.stories.tsx +68 -49
- package/src/_stories/Chart.stories.tsx +7 -0
- package/{examples/private/line-issue.json → src/_stories/_mock/barchart_labels.mock.json} +150 -35
- package/src/_stories/_mock/dynamic_series_bar_config.json +1 -1
- package/src/_stories/_mock/dynamic_series_suppression_mock.json +610 -0
- package/src/components/Annotations/components/AnnotationDropdown.tsx +2 -2
- package/src/components/AreaChart/components/AreaChart.jsx +33 -5
- package/src/components/Axis/Categorical.Axis.tsx +2 -2
- package/src/components/BarChart/components/BarChart.Horizontal.tsx +50 -40
- package/src/components/BarChart/components/BarChart.StackedHorizontal.tsx +18 -8
- package/src/components/BarChart/components/BarChart.StackedVertical.tsx +19 -8
- package/src/components/BarChart/components/BarChart.Vertical.tsx +47 -30
- package/src/components/BarChart/components/{BarChart.jsx → BarChart.tsx} +23 -5
- package/src/components/BarChart/components/context.tsx +20 -2
- package/src/components/BarChart/helpers/getBarHeights.ts +47 -0
- package/src/components/BarChart/helpers/index.ts +5 -2
- package/src/components/BarChart/helpers/tests/getBarHeights.test.ts +83 -0
- package/src/{hooks → components/BarChart/helpers}/useBarChart.ts +9 -46
- package/src/components/BoxPlot/BoxPlot.tsx +2 -1
- package/src/components/DeviationBar.jsx +2 -1
- package/src/components/EditorPanel/components/Panels/Panel.General.tsx +34 -34
- package/src/components/EditorPanel/components/Panels/Panel.Series.tsx +51 -25
- package/src/components/EditorPanel/components/Panels/Panel.Visual.tsx +10 -3
- package/src/components/EditorPanel/useEditorPermissions.ts +1 -4
- package/src/components/ForestPlot/ForestPlot.tsx +2 -2
- package/src/components/Legend/Legend.Component.tsx +1 -1
- package/src/components/Legend/Legend.Suppression.tsx +12 -22
- package/src/components/Legend/helpers/createFormatLabels.tsx +28 -0
- package/src/components/LineChart/LineChartProps.ts +3 -1
- package/src/components/LineChart/components/LineChart.Circle.tsx +72 -119
- package/src/components/LineChart/helpers.ts +133 -56
- package/src/components/LineChart/index.tsx +107 -53
- package/src/components/LinearChart.tsx +40 -89
- package/src/components/PairedBarChart.jsx +3 -2
- package/src/components/PieChart/PieChart.tsx +71 -91
- package/src/components/ScatterPlot/ScatterPlot.jsx +5 -0
- package/src/components/Sparkline/components/SparkLine.tsx +80 -18
- package/src/components/ZoomBrush.tsx +4 -4
- package/src/data/initial-state.js +3 -1
- package/src/helpers/countNumOfTicks.ts +1 -1
- package/src/helpers/dataHelpers.ts +23 -2
- package/src/helpers/sizeHelpers.ts +1 -1
- package/src/hooks/useMinMax.ts +21 -28
- package/src/hooks/useRightAxis.ts +4 -2
- package/src/hooks/useScales.ts +10 -6
- package/src/hooks/useTooltip.tsx +204 -203
- package/src/index.jsx +2 -2
- package/src/scss/main.scss +13 -6
- package/src/types/ChartConfig.ts +5 -0
- package/LICENSE +0 -201
- package/examples/private/DEV-8850-2.json +0 -493
- package/examples/private/DEV-9822.json +0 -574
- package/examples/private/DEV-9840.json +0 -553
- package/examples/private/DEV-9850-3.json +0 -461
- package/examples/private/chart.json +0 -1084
- package/examples/private/ci_formatted.json +0 -202
- package/examples/private/ci_issue.json +0 -3016
- package/examples/private/completed.json +0 -634
- package/examples/private/dem-data-long.csv +0 -20
- package/examples/private/dem-data-long.json +0 -36
- package/examples/private/demographic_data.csv +0 -157
- package/examples/private/demographic_data.json +0 -2654
- package/examples/private/demographic_dynamic.json +0 -443
- package/examples/private/demographic_standard.json +0 -560
- package/examples/private/ehdi.json +0 -29939
- package/examples/private/not-loading.json +0 -360
- package/examples/private/test.json +0 -493
package/index.html
CHANGED
|
@@ -45,7 +45,8 @@
|
|
|
45
45
|
-->
|
|
46
46
|
|
|
47
47
|
<!-- GENERIC CHART TYPES -->
|
|
48
|
-
<div class="react-container" data-config="/examples/private/ari-other-conditions-1.json"></div>
|
|
48
|
+
<!-- <div class="react-container" data-config="/examples/private/ari-other-conditions-1.json"></div> -->
|
|
49
|
+
<!-- <div class="react-container" data-config="/examples/private/Viral-Respiratory-Deaths-Age.json"></div> -->
|
|
49
50
|
<!-- <div class="react-container" data-config="/examples/cases-year.json"></div>-->
|
|
50
51
|
<!-- <div class="react-container" data-config="/examples/test.json"></div> -->
|
|
51
52
|
<!-- <div class="react-container" data-config="/examples/feature/line/line-chart.json"></div> -->
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cdc/chart",
|
|
3
|
-
"version": "4.25.
|
|
3
|
+
"version": "4.25.5-1",
|
|
4
4
|
"description": "React component for visualizing tabular data in various types of charts",
|
|
5
5
|
"moduleName": "CdcChart",
|
|
6
6
|
"main": "dist/cdcchart",
|
|
@@ -27,43 +27,38 @@
|
|
|
27
27
|
"license": "Apache-2.0",
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@hello-pangea/dnd": "^16.2.0",
|
|
30
|
-
"@
|
|
31
|
-
"@visx/
|
|
32
|
-
"@visx/
|
|
33
|
-
"@visx/
|
|
34
|
-
"@visx/
|
|
35
|
-
"@visx/
|
|
36
|
-
"@visx/
|
|
37
|
-
"@visx/
|
|
38
|
-
"@visx/
|
|
39
|
-
"@visx/
|
|
40
|
-
"@visx/
|
|
41
|
-
"@visx/
|
|
42
|
-
"@visx/
|
|
43
|
-
"
|
|
44
|
-
"chroma-js": "^2.1.2",
|
|
45
|
-
"d3-array": "^2.8.0",
|
|
30
|
+
"@react-spring/web": "^9.7.5",
|
|
31
|
+
"@visx/axis": "3.12.0",
|
|
32
|
+
"@visx/curve": "3.12.0",
|
|
33
|
+
"@visx/event": "3.12.0",
|
|
34
|
+
"@visx/glyph": "3.12.0",
|
|
35
|
+
"@visx/gradient": "3.12.0",
|
|
36
|
+
"@visx/marker": "3.12.0",
|
|
37
|
+
"@visx/mock-data": "3.12.0",
|
|
38
|
+
"@visx/scale": "3.12.0",
|
|
39
|
+
"@visx/shape": "3.12.0",
|
|
40
|
+
"@visx/stats": "3.12.0",
|
|
41
|
+
"@visx/text": "3.12.0",
|
|
42
|
+
"@visx/tooltip": "3.12.0",
|
|
43
|
+
"d3-array": "3.2.4",
|
|
46
44
|
"d3-format": "^3.1.0",
|
|
47
45
|
"d3-sankey": "^0.12.3",
|
|
48
|
-
"d3-time-format": "
|
|
49
|
-
"html-react-parser": "^3.0.8",
|
|
46
|
+
"d3-time-format": "4.1.0",
|
|
50
47
|
"js-base64": "^2.5.2",
|
|
51
|
-
"papaparse": "^5.3.0",
|
|
52
48
|
"react-accessible-accordion": "^3.3.4",
|
|
53
|
-
"react-icons": "
|
|
54
|
-
"
|
|
55
|
-
"react-table": "^7.5.0",
|
|
56
|
-
"react-tooltip": "5.8.2-beta.3",
|
|
57
|
-
"use-debounce": "^6.0.1",
|
|
58
|
-
"whatwg-fetch": "^3.6.2"
|
|
49
|
+
"react-icons": "5.5.0",
|
|
50
|
+
"use-debounce": "^6.0.1"
|
|
59
51
|
},
|
|
60
52
|
"peerDependencies": {
|
|
61
53
|
"react": "^18.2.0",
|
|
62
54
|
"react-dom": "^18.2.0"
|
|
63
55
|
},
|
|
64
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "1d0a6e716bc113e6bea3636fcae90ebf2d19bb5c",
|
|
65
57
|
"devDependencies": {
|
|
58
|
+
"@types/d3-array": "^3.2.1",
|
|
59
|
+
"@types/d3-format": "^3.0.4",
|
|
66
60
|
"@types/d3-sankey": "^0.12.4",
|
|
61
|
+
"@types/d3-time-format": "^4.0.3",
|
|
67
62
|
"resize-observer-polyfill": "^1.5.1"
|
|
68
63
|
}
|
|
69
64
|
}
|
|
@@ -64,6 +64,7 @@ import getViewport from '@cdc/core/helpers/getViewport'
|
|
|
64
64
|
import isNumber from '@cdc/core/helpers/isNumber'
|
|
65
65
|
import coveUpdateWorker from '@cdc/core/helpers/coveUpdateWorker'
|
|
66
66
|
import EditorContext from '../../editor/src/ConfigContext'
|
|
67
|
+
import { EDITOR_WIDTH } from '@cdc/core/helpers/constants'
|
|
67
68
|
// Local helpers
|
|
68
69
|
import { isConvertLineToBarGraph } from './helpers/isConvertLineToBarGraph'
|
|
69
70
|
import { getBoxPlotConfig } from './helpers/getBoxPlotConfig'
|
|
@@ -74,8 +75,6 @@ import { getColorScale } from './helpers/getColorScale'
|
|
|
74
75
|
import './scss/main.scss'
|
|
75
76
|
import { getInitialState, reducer } from './store/chart.reducer'
|
|
76
77
|
|
|
77
|
-
export const EDITOR_WIDTH = 350
|
|
78
|
-
|
|
79
78
|
interface CdcChartProps {
|
|
80
79
|
config?: ChartConfig
|
|
81
80
|
isEditor?: boolean
|
|
@@ -142,8 +141,6 @@ const CdcChart: React.FC<CdcChartProps> = ({
|
|
|
142
141
|
dispatch({ type: 'SET_DRAG_ANNOTATIONS', payload: isDragging })
|
|
143
142
|
}
|
|
144
143
|
|
|
145
|
-
if (isDebug) console.log('Chart config, isEditor', config, isEditor)
|
|
146
|
-
|
|
147
144
|
// Destructure items from config for more readable JSX
|
|
148
145
|
let { legend, title } = config
|
|
149
146
|
|
|
@@ -280,14 +277,15 @@ const CdcChart: React.FC<CdcChartProps> = ({
|
|
|
280
277
|
newConfig.series.forEach(series => {
|
|
281
278
|
newConfig.runtime.areaSeriesKeys.push({ ...series, type: 'Area Chart' })
|
|
282
279
|
})
|
|
280
|
+
newConfig.visualizationSubType = 'stacked'
|
|
283
281
|
}
|
|
284
282
|
|
|
285
283
|
if (
|
|
286
284
|
(newConfig.visualizationType === 'Bar' && newConfig.orientation === 'horizontal') ||
|
|
287
285
|
['Deviation Bar', 'Paired Bar', 'Forest Plot'].includes(newConfig.visualizationType)
|
|
288
286
|
) {
|
|
289
|
-
newConfig.runtime.xAxis = newConfig.yAxis
|
|
290
|
-
newConfig.runtime.yAxis = newConfig.xAxis
|
|
287
|
+
newConfig.runtime.xAxis = _.cloneDeep(newConfig.yAxis.yAxis || newConfig.yAxis)
|
|
288
|
+
newConfig.runtime.yAxis = _.cloneDeep(newConfig.xAxis.xAxis || newConfig.xAxis)
|
|
291
289
|
newConfig.runtime.yAxis.labelOffset *= -1
|
|
292
290
|
|
|
293
291
|
newConfig.runtime.horizontal = false
|
|
@@ -397,17 +395,16 @@ const CdcChart: React.FC<CdcChartProps> = ({
|
|
|
397
395
|
newConfig.data = transform.developerStandardize(newConfig.data, newConfig.dataDescription)
|
|
398
396
|
}
|
|
399
397
|
} catch (err) {
|
|
400
|
-
console.
|
|
398
|
+
console.error('Error on prepareData function ', err)
|
|
401
399
|
}
|
|
402
400
|
return newConfig
|
|
403
401
|
}
|
|
404
|
-
|
|
405
402
|
useEffect(() => {
|
|
406
403
|
const load = async () => {
|
|
407
404
|
try {
|
|
408
405
|
if (configObj) {
|
|
409
406
|
const preparedConfig = await prepareConfig(configObj)
|
|
410
|
-
|
|
407
|
+
const preppedData = await prepareData(preparedConfig)
|
|
411
408
|
dispatch({ type: 'SET_STATE_DATA', payload: preppedData.data })
|
|
412
409
|
dispatch({ type: 'SET_EXCLUDED_DATA', payload: preppedData.data })
|
|
413
410
|
updateConfig(preparedConfig, preppedData.data)
|
|
@@ -883,7 +880,10 @@ const CdcChart: React.FC<CdcChartProps> = ({
|
|
|
883
880
|
className={
|
|
884
881
|
legend.hide || isLegendWrapViewport(currentViewport)
|
|
885
882
|
? 'w-100'
|
|
886
|
-
: legend.position === 'bottom' ||
|
|
883
|
+
: legend.position === 'bottom' ||
|
|
884
|
+
legend.position === 'top' ||
|
|
885
|
+
visualizationType === 'Sankey' ||
|
|
886
|
+
visualizationType === 'Spark Line'
|
|
887
887
|
? 'w-100'
|
|
888
888
|
: 'w-75'
|
|
889
889
|
}
|
|
@@ -16,6 +16,16 @@ export const bar_chart_with_labels: Story = {
|
|
|
16
16
|
isEditor: false
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
+
export const bar_chart_horizontal_labels: Story = {
|
|
20
|
+
args: {
|
|
21
|
+
config: {
|
|
22
|
+
...barChartCiLabels,
|
|
23
|
+
orientation: 'horizontal',
|
|
24
|
+
yAxis: { ...barChartCiLabels.yAxis, displayNumbersOnBar: true }
|
|
25
|
+
},
|
|
26
|
+
isEditor: false
|
|
27
|
+
}
|
|
28
|
+
}
|
|
19
29
|
|
|
20
30
|
export const line_Chart_Dynamic_Confidence_Intervals: Story = {
|
|
21
31
|
args: {
|
|
@@ -1,49 +1,68 @@
|
|
|
1
|
-
import DynamicSeriesConfig from './_mock/dynamic_series_config.json'
|
|
2
|
-
import DynamicSeriesBarConfig from './_mock/dynamic_series_bar_config.json'
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
1
|
+
import DynamicSeriesConfig from './_mock/dynamic_series_config.json'
|
|
2
|
+
import DynamicSeriesBarConfig from './_mock/dynamic_series_bar_config.json'
|
|
3
|
+
import DynamicSeriesSuppression from './_mock/dynamic_series_suppression_mock.json'
|
|
4
|
+
import { Meta, StoryObj } from '@storybook/react'
|
|
5
|
+
import Chart from '../CdcChartComponent'
|
|
6
|
+
|
|
7
|
+
const meta: Meta<typeof Chart> = {
|
|
8
|
+
title: 'Components/Templates/Chart/Dynamic Series',
|
|
9
|
+
component: Chart
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof Chart>
|
|
13
|
+
|
|
14
|
+
// data with a line break
|
|
15
|
+
const data = DynamicSeriesConfig.data.map((d, i) => (i === 4 ? { ...d, Data_Value: null } : d))
|
|
16
|
+
export const LineShowPoints: Story = {
|
|
17
|
+
args: {
|
|
18
|
+
config: {
|
|
19
|
+
...DynamicSeriesConfig,
|
|
20
|
+
data,
|
|
21
|
+
originalFormattedData: data,
|
|
22
|
+
formattedData: data,
|
|
23
|
+
lineDatapointStyle: 'always show'
|
|
24
|
+
},
|
|
25
|
+
isEditor: false
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export const LineSuppression: Story = {
|
|
30
|
+
args: {
|
|
31
|
+
config: DynamicSeriesSuppression,
|
|
32
|
+
isEditor: false
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export const LineHoverPoints: Story = {
|
|
37
|
+
args: {
|
|
38
|
+
config: DynamicSeriesConfig,
|
|
39
|
+
isEditor: false
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export const Bar_Vertical: Story = {
|
|
44
|
+
args: {
|
|
45
|
+
config: DynamicSeriesBarConfig,
|
|
46
|
+
isEditor: false
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export const Bar_Horizontal: Story = {
|
|
51
|
+
args: {
|
|
52
|
+
config: { ...DynamicSeriesBarConfig, orientation: 'horizontal' },
|
|
53
|
+
isEditor: false
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export const Legend_Order: Story = {
|
|
58
|
+
args: {
|
|
59
|
+
config: {
|
|
60
|
+
...DynamicSeriesBarConfig,
|
|
61
|
+
orientation: 'vertical',
|
|
62
|
+
legend: { ...DynamicSeriesBarConfig, order: 'desc' }
|
|
63
|
+
},
|
|
64
|
+
isEditor: false
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export default meta
|
|
@@ -7,6 +7,7 @@ import lollipop from './_mock/lollipop.json'
|
|
|
7
7
|
import forestPlot from '../../examples/feature/forest-plot/forest-plot.json'
|
|
8
8
|
import pairedBar from './_mock/paired-bar.json'
|
|
9
9
|
import horizontalBarConfig from './_mock/horizontal_bar.json'
|
|
10
|
+
import barChartLabels from './_mock/barchart_labels.mock.json'
|
|
10
11
|
import pieConfig from './_mock/pie_with_data.json'
|
|
11
12
|
import boxPlotConfig from './_mock/boxplot_multiseries.json'
|
|
12
13
|
import areaChartStacked from './_mock/area_chart_stacked.json'
|
|
@@ -58,6 +59,12 @@ export const Horizontal_Bar: Story = {
|
|
|
58
59
|
}
|
|
59
60
|
}
|
|
60
61
|
|
|
62
|
+
export const BarChart_Labels: Story = {
|
|
63
|
+
args: {
|
|
64
|
+
config: barChartLabels
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
61
68
|
export const Pie: Story = {
|
|
62
69
|
args: {
|
|
63
70
|
config: pieConfig
|
|
@@ -24,11 +24,11 @@
|
|
|
24
24
|
"isResponsiveTicks": true,
|
|
25
25
|
"general": {
|
|
26
26
|
"annotationDropdownText": "Annotations",
|
|
27
|
-
"showDownloadButton": false,
|
|
28
27
|
"showMissingDataLabel": false,
|
|
29
28
|
"showSuppressedSymbol": true,
|
|
30
29
|
"showZeroValueData": false,
|
|
31
|
-
"hideNullValue": true
|
|
30
|
+
"hideNullValue": true,
|
|
31
|
+
"showDownloadButton": false
|
|
32
32
|
},
|
|
33
33
|
"padding": {
|
|
34
34
|
"left": 5,
|
|
@@ -127,8 +127,8 @@
|
|
|
127
127
|
"dataKey": "Year",
|
|
128
128
|
"label": "Year",
|
|
129
129
|
"manual": true,
|
|
130
|
-
"axisBBox":
|
|
131
|
-
"tickWidthMax":
|
|
130
|
+
"axisBBox": 62.779998779296875,
|
|
131
|
+
"tickWidthMax": 39
|
|
132
132
|
},
|
|
133
133
|
"table": {
|
|
134
134
|
"label": "Data Table",
|
|
@@ -172,6 +172,8 @@
|
|
|
172
172
|
"seriesHighlight": [],
|
|
173
173
|
"style": "boxes",
|
|
174
174
|
"subStyle": "linear blocks",
|
|
175
|
+
"groupBy": "",
|
|
176
|
+
"shape": "circle",
|
|
175
177
|
"tickRotation": "",
|
|
176
178
|
"hideBorder": {
|
|
177
179
|
"side": false,
|
|
@@ -193,7 +195,7 @@
|
|
|
193
195
|
"palette": "monochrome-1",
|
|
194
196
|
"isPaletteReversed": false
|
|
195
197
|
},
|
|
196
|
-
"labels":
|
|
198
|
+
"labels": true,
|
|
197
199
|
"dataFormat": {
|
|
198
200
|
"commas": false,
|
|
199
201
|
"prefix": "",
|
|
@@ -210,36 +212,14 @@
|
|
|
210
212
|
"accent": true,
|
|
211
213
|
"background": true,
|
|
212
214
|
"verticalHoverLine": false,
|
|
213
|
-
"horizontalHoverLine": false
|
|
215
|
+
"horizontalHoverLine": false,
|
|
216
|
+
"lineDatapointSymbol": "none",
|
|
217
|
+
"maximumShapeAmount": 7
|
|
214
218
|
},
|
|
215
219
|
"useLogScale": false,
|
|
216
220
|
"filterBehavior": "Filter Change",
|
|
217
221
|
"highlightedBarValues": [],
|
|
218
222
|
"series": [
|
|
219
|
-
{
|
|
220
|
-
"dataKey": "American Indian/Alaska Native",
|
|
221
|
-
"type": "Line",
|
|
222
|
-
"axis": "Left",
|
|
223
|
-
"tooltip": true
|
|
224
|
-
},
|
|
225
|
-
{
|
|
226
|
-
"dataKey": "Asian/Pacific Islander",
|
|
227
|
-
"type": "Line",
|
|
228
|
-
"axis": "Left",
|
|
229
|
-
"tooltip": true
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
"dataKey": "Black, non-Hispanic",
|
|
233
|
-
"type": "Line",
|
|
234
|
-
"axis": "Left",
|
|
235
|
-
"tooltip": true
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
"dataKey": "White, non-Hispanic",
|
|
239
|
-
"type": "Line",
|
|
240
|
-
"axis": "Left",
|
|
241
|
-
"tooltip": true
|
|
242
|
-
},
|
|
243
223
|
{
|
|
244
224
|
"dataKey": "Hispanic",
|
|
245
225
|
"type": "Line",
|
|
@@ -354,7 +334,7 @@
|
|
|
354
334
|
"_owner": null
|
|
355
335
|
},
|
|
356
336
|
"content": "Present one or more data trends over time.",
|
|
357
|
-
"visualizationType": "
|
|
337
|
+
"visualizationType": "Bar",
|
|
358
338
|
"datasets": {},
|
|
359
339
|
"activeVizButtonID": 4,
|
|
360
340
|
"data": [
|
|
@@ -490,8 +470,143 @@
|
|
|
490
470
|
"dataFileName": "chart_data 2-6.csv",
|
|
491
471
|
"dataFileSourceType": "file",
|
|
492
472
|
"dataDescription": {
|
|
493
|
-
"horizontal":
|
|
473
|
+
"horizontal": false,
|
|
474
|
+
"series": false
|
|
494
475
|
},
|
|
495
|
-
"version": "4.
|
|
496
|
-
"dynamicMarginTop": 0
|
|
497
|
-
|
|
476
|
+
"version": "4.25.1",
|
|
477
|
+
"dynamicMarginTop": 0,
|
|
478
|
+
"formattedData": [
|
|
479
|
+
{
|
|
480
|
+
"Year": "2007",
|
|
481
|
+
"American Indian/Alaska Native": "1.4",
|
|
482
|
+
"Asian/Pacific Islander": "0.9",
|
|
483
|
+
"Black, non-Hispanic": "2.3",
|
|
484
|
+
"White, non-Hispanic": "1",
|
|
485
|
+
"Hispanic": "1"
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"Year": "2008",
|
|
489
|
+
"American Indian/Alaska Native": "1.8",
|
|
490
|
+
"Asian/Pacific Islander": "0.8",
|
|
491
|
+
"Black, non-Hispanic": "2.2",
|
|
492
|
+
"White, non-Hispanic": "0.9",
|
|
493
|
+
"Hispanic": "0.8"
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
"Year": "2009",
|
|
497
|
+
"American Indian/Alaska Native": "1",
|
|
498
|
+
"Asian/Pacific Islander": "0.7",
|
|
499
|
+
"Black, non-Hispanic": "1.7",
|
|
500
|
+
"White, non-Hispanic": "0.8",
|
|
501
|
+
"Hispanic": "0.7"
|
|
502
|
+
},
|
|
503
|
+
{
|
|
504
|
+
"Year": "2010",
|
|
505
|
+
"American Indian/Alaska Native": "1.1",
|
|
506
|
+
"Asian/Pacific Islander": "0.6",
|
|
507
|
+
"Black, non-Hispanic": "1.7",
|
|
508
|
+
"White, non-Hispanic": "0.8",
|
|
509
|
+
"Hispanic": "0.6"
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
"Year": "2011",
|
|
513
|
+
"American Indian/Alaska Native": "0.5",
|
|
514
|
+
"Asian/Pacific Islander": "0.4",
|
|
515
|
+
"Black, non-Hispanic": "1.4",
|
|
516
|
+
"White, non-Hispanic": "0.8",
|
|
517
|
+
"Hispanic": "0.4"
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
"Year": "2012",
|
|
521
|
+
"American Indian/Alaska Native": "0.7",
|
|
522
|
+
"Asian/Pacific Islander": "0.4",
|
|
523
|
+
"Black, non-Hispanic": "1.1",
|
|
524
|
+
"White, non-Hispanic": "0.8",
|
|
525
|
+
"Hispanic": "0.4"
|
|
526
|
+
},
|
|
527
|
+
{
|
|
528
|
+
"Year": "2013",
|
|
529
|
+
"American Indian/Alaska Native": "0.7",
|
|
530
|
+
"Asian/Pacific Islander": "0.3",
|
|
531
|
+
"Black, non-Hispanic": "0.9",
|
|
532
|
+
"White, non-Hispanic": "0.9",
|
|
533
|
+
"Hispanic": "0.4"
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
"Year": "2014",
|
|
537
|
+
"American Indian/Alaska Native": "0.8",
|
|
538
|
+
"Asian/Pacific Islander": "0.3",
|
|
539
|
+
"Black, non-Hispanic": "0.8",
|
|
540
|
+
"White, non-Hispanic": "0.9",
|
|
541
|
+
"Hispanic": "0.3"
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
"Year": "2015",
|
|
545
|
+
"American Indian/Alaska Native": "0.7",
|
|
546
|
+
"Asian/Pacific Islander": "0.4",
|
|
547
|
+
"Black, non-Hispanic": "1",
|
|
548
|
+
"White, non-Hispanic": "1.1",
|
|
549
|
+
"Hispanic": "0.3"
|
|
550
|
+
},
|
|
551
|
+
{
|
|
552
|
+
"Year": "2016",
|
|
553
|
+
"American Indian/Alaska Native": "0.5",
|
|
554
|
+
"Asian/Pacific Islander": "0.3",
|
|
555
|
+
"Black, non-Hispanic": "0.9",
|
|
556
|
+
"White, non-Hispanic": "1",
|
|
557
|
+
"Hispanic": "0.3"
|
|
558
|
+
},
|
|
559
|
+
{
|
|
560
|
+
"Year": "2017",
|
|
561
|
+
"American Indian/Alaska Native": "0.7",
|
|
562
|
+
"Asian/Pacific Islander": "0.3",
|
|
563
|
+
"Black, non-Hispanic": "1",
|
|
564
|
+
"White, non-Hispanic": "1.1",
|
|
565
|
+
"Hispanic": "0.3"
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
"Year": "2018",
|
|
569
|
+
"American Indian/Alaska Native": "0.9",
|
|
570
|
+
"Asian/Pacific Islander": "0.3",
|
|
571
|
+
"Black, non-Hispanic": "1",
|
|
572
|
+
"White, non-Hispanic": "1",
|
|
573
|
+
"Hispanic": "0.4"
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
"Year": "2019",
|
|
577
|
+
"American Indian/Alaska Native": "0.6",
|
|
578
|
+
"Asian/Pacific Islander": "0.3",
|
|
579
|
+
"Black, non-Hispanic": "0.9",
|
|
580
|
+
"White, non-Hispanic": "1",
|
|
581
|
+
"Hispanic": "0.4"
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
"Year": "2020",
|
|
585
|
+
"American Indian/Alaska Native": "0.4",
|
|
586
|
+
"Asian/Pacific Islander": "0.2",
|
|
587
|
+
"Black, non-Hispanic": "0.7",
|
|
588
|
+
"White, non-Hispanic": "0.7",
|
|
589
|
+
"Hispanic": "0.3"
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
"Year": "2021",
|
|
593
|
+
"American Indian/Alaska Native": "0.4",
|
|
594
|
+
"Asian/Pacific Islander": "0.2",
|
|
595
|
+
"Black, non-Hispanic": "0.9",
|
|
596
|
+
"White, non-Hispanic": "0.6",
|
|
597
|
+
"Hispanic": "0.4"
|
|
598
|
+
},
|
|
599
|
+
{
|
|
600
|
+
"Year": "2022",
|
|
601
|
+
"American Indian/Alaska Native": "0.4",
|
|
602
|
+
"Asian/Pacific Islander": "0.3",
|
|
603
|
+
"Black, non-Hispanic": "1",
|
|
604
|
+
"White, non-Hispanic": "0.6",
|
|
605
|
+
"Hispanic": "0.4"
|
|
606
|
+
}
|
|
607
|
+
],
|
|
608
|
+
"filters": [],
|
|
609
|
+
"migrations": {
|
|
610
|
+
"addColorMigration": true
|
|
611
|
+
}
|
|
612
|
+
}
|