Here is a sample flow that keeps track of counts by date in an array. When the date changes, it creates a new element. You can then send this into a chart.
However, as @jbudd suggested, it’s better to keep this in a database. Context variables will be reset if the Node-RED is restarted (unless you are wiriting them to the file storage system - I think there is an option in settings.js file but I haven’t used that)
[{"id":"7f9ec18312f3e6cd","type":"function","z":"6bd6b1f16707d706","name":"Get Chart Data","func":"var tempArray = flow.get('chartdata') || [];\nvar startDate = msg.payload.date;\nvar oldDate = flow.get('oldDate');\nvar oldCount = flow.get('oldCount') || 0;\nvar count = 0;\n\n// If this is the first time, initialize array\nif (tempArray.length === 0) {\n tempArray.push({ date: startDate, starts: 0 });\n }\n\nvar lastIndex = tempArray.length - 1;\n\nif (startDate === oldDate) {\n count = oldCount + 1;\n flow.set(\"oldCount\", count);\n // Update last element\n tempArray[lastIndex].date = startDate;\n tempArray[lastIndex].starts = count;\n} else {\n count = 1;\n flow.set(\"oldCount\", count);\n flow.set(\"oldDate\", startDate);\n // Add new element\n tempArray.push({ date: startDate, starts: count});\n}\n\n// Save to flow and msg\nflow.set(\"chartdata\", tempArray);\nmsg.chartData = tempArray;\n\nreturn msg;\n","outputs":1,"timeout":"","noerr":0,"initialize":"// Code added here will be run once\n// whenever the node is started.\nvar count = flow.get('count1');","finalize":"","libs":[],"x":1285.8346099853516,"y":952.8860168457031,"wires":[["89d6ca25481c3c8b"]]},{"id":"89d6ca25481c3c8b","type":"debug","z":"6bd6b1f16707d706","name":"bar chart","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1456.8346099853516,"y":950.8860168457031,"wires":[]},{"id":"f6e258d37f015672","type":"change","z":"6bd6b1f16707d706","name":"Today's Data","rules":[{"t":"set","p":"payload.date","pt":"msg","to":" $moment().tz('America/Chicago').format('YYYY-MM-DD')\t","tot":"jsonata"},{"t":"set","p":"payload.count","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1078.6581115722656,"y":879.7958984375,"wires":[["7f9ec18312f3e6cd"]]},{"id":"9df607764821a4d8","type":"inject","z":"6bd6b1f16707d706","name":"","props":[{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"increment","x":902.8346252441406,"y":881.2389526367188,"wires":[["f6e258d37f015672"]]},{"id":"8a744b0faccd7185","type":"change","z":"6bd6b1f16707d706","name":"Today + 1","rules":[{"t":"set","p":"payload.date","pt":"msg","to":"$moment().tz(\"America/Chicago\").add(1, \"days\").format(\"YYYY-MM-DD\")","tot":"jsonata"},{"t":"set","p":"payload.count","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1085.5992584228516,"y":955.7959289550781,"wires":[["7f9ec18312f3e6cd"]]},{"id":"5d50daf8aca40e36","type":"inject","z":"6bd6b1f16707d706","name":"","props":[{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"increment","x":906.1875,"y":955.5919189453125,"wires":[["8a744b0faccd7185"]]},{"id":"53feb0d6a7f09b40","type":"change","z":"6bd6b1f16707d706","name":"Today + 2","rules":[{"t":"set","p":"payload.date","pt":"msg","to":"$moment().tz(\"America/Chicago\").add(2, \"days\").format(\"YYYY-MM-DD\")","tot":"jsonata"},{"t":"set","p":"payload.count","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1089.1875,"y":1035.5919189453125,"wires":[["7f9ec18312f3e6cd"]]},{"id":"e20d76aa56f7a30b","type":"inject","z":"6bd6b1f16707d706","name":"","props":[{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"increment","x":909.7757415771484,"y":1035.3879089355469,"wires":[["53feb0d6a7f09b40"]]}]