From d036ed8b00ee0809414ea928c3eb9f47ea45c064 Mon Sep 17 00:00:00 2001 From: Xavier Medrano Date: Thu, 9 Mar 2023 17:12:21 -0500 Subject: [PATCH] begin adding highcharts documentation, WIP --- charting/README.md | 138 ++++++++++++++++++++++++++++++++++++++++ images/sample_chart.png | Bin 0 -> 47634 bytes 2 files changed, 138 insertions(+) create mode 100644 charting/README.md create mode 100644 images/sample_chart.png diff --git a/charting/README.md b/charting/README.md new file mode 100644 index 0000000..28fc26b --- /dev/null +++ b/charting/README.md @@ -0,0 +1,138 @@ +# Charting + +## Highcharts + +[Highcharts](https://www.highcharts.com/) is a charting library with official React support, that helps visualize data. + +### Setup + +Install Highcharts by including it in your `package.json` with both `"highcharts"` and `"highcharts-react-official"`. + +Once installed, make a new file for your Highcharts react component, and import Highcharts: + +``` +import React from 'react' +import { createRoot } from "react-dom/client" +import Highcharts from 'highcharts' +import HighchartsReact from 'highcharts-react-official' + +function SampleChart({ props }) { + const options = { + title: { + text: 'My chart' + }, + series: [{ + data: [1, 2, 3] + }] + } + + return +} + +const container = window.reactSampleMount +const root = createRoot(container) +root.render() +``` + +Then within your django template, set up a `div` for your chart where the id matches the name of the component: + +``` +
+
+

+ Loading chart...

+
+
+``` + +And add the appropriate scripts to this same template where `window.` matches the value of the container in the component, and is using the `div` we just set up: + +``` + + +{% compress js %} + +{% endcompress %} +``` + +And now you should have a basic chart up and running! :clap::clap::clap: +![Sample Chart](../images/sample_chart.png) + +### Adding Data + +A chart's no good without the data you're trying to show. You can have as many series as you like, and to add your data points to each, simply add them to the series: + +``` +const options = { + title: { + text: 'My chart' + }, + series: [ + { + name: 'First Series', + color: '#FF0000', + data: [ + props.point1, + props.point2, + props.point3 + ] + }, + { + name: 'Second Series', + color: '#0000FF', + data: [ + props.point4, + props.point5, + props.point6 + ] + } + ] +} +``` + +### Customization + +From here you can follow the Highcharts docs to modify your chart. Here are some features you can include. + +Changing the type of chart + +``` +const options = { + title: { + text: 'My chart' + }, + chart: { + type: 'column' <<< + } +} +``` + +Label the xAxis and/or yAxis: +``` +title: { + text: '# of People Who Prefer Each Color' +} +xAxis: { + categories: [ + "Red", + "Blue", + "Yellow", + "Green" + ], + title: { + text: "Colors", + style: { + fontSize: 11, + }, + }, +}, +``` + +Format the tooltip that shows on hover + +Label the amounts for each point on the chart (with dataLabels) + +Disable credits \ No newline at end of file diff --git a/images/sample_chart.png b/images/sample_chart.png new file mode 100644 index 0000000000000000000000000000000000000000..511539103c455a0e15ab5be349ef16a9027b9976 GIT binary patch literal 47634 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