How to control chart, configured as pie?

I'm playing a little bit with Dashboard 2 in order to find out, what the best widget is, to be used for the different applications.

Unfortunately, I find very little information about the ui-chart node, configured as "Pie".

As test I use "node-red-contrib-os", which gives the following output:

msg : Object
object
_msgid: "956fbf90d52d8a08"
payload: object
totalmem: 15871.977
freemem: 15231.863
memusage: 4.03

This is an object with 3 key/value pairs. The first pair is i.m.o not really relevant.
I want to show the used memory and the free memory.
I noticed, that in order to show them both, I have to send a message for each key/value pair.

I think, that this can be done in one message.

The output of the "memory" node, I connected to the input of a "Function" node.
The content of the "Function" node is as follows:

let payload = msg.payload;
msg.topic = Object.keys(payload)[1]
msg.payload = Object.values(payload)[1]
node.send (msg);

msg.topic = Object.keys(payload)[2]
msg.payload = Object.values(payload)[2]
node.send(msg);

The "chart" node is configured as follows:

This results in a widget on the dashboard, but it does not look very nice

Questions:

  1. What is the easiest way to send the data to the "ui-chart"node?
    Is it possible to send the data of multiple slices in 1 message?
  2. As the used memory is very small, compared with the free memory, it is hardly visible.
    Any idea to make it look better?

Best Regards and Happy Easter

Does this example help?

[{"id":"d10804e8db462840","type":"inject","z":"997da33a0beedade","g":"e369e5a41a4eda75","name":"Finance Data","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[{\"year\":2021,\"quarter\":\"Q1\",\"earnings\":115},{\"year\":2021,\"quarter\":\"Q2\",\"earnings\":120},{\"year\":2021,\"quarter\":\"Q3\",\"earnings\":100},{\"year\":2021,\"quarter\":\"Q4\",\"earnings\":180}]","payloadType":"json","x":190,"y":2840,"wires":[["b87fe3201b219a05"]]},{"id":"49dbac215fa8b40f","type":"inject","z":"997da33a0beedade","g":"e369e5a41a4eda75","name":"Clear","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[]","payloadType":"json","x":210,"y":2880,"wires":[["b87fe3201b219a05"]]},{"id":"b87fe3201b219a05","type":"ui-chart","z":"997da33a0beedade","g":"e369e5a41a4eda75","group":"e0d7a0182b3c8eb7","name":"Pie Chart","label":"Pie Chart","order":1,"chartType":"pie","category":"year","categoryType":"property","xAxisLabel":"","xAxisProperty":"quarter","xAxisPropertyType":"property","xAxisType":"radial","xAxisFormat":"","xAxisFormatType":"auto","xmin":"","xmax":"","yAxisLabel":"","yAxisProperty":"earnings","yAxisPropertyType":"property","ymin":"","ymax":"","bins":"","action":"replace","stackSeries":false,"pointShape":"circle","pointRadius":4,"showLegend":true,"removeOlder":1,"removeOlderUnit":"3600","removeOlderPoints":"","colors":["#0095ff","#ff0000","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"textColor":["#666666"],"textColorDefault":true,"gridColor":["#e5e5e5"],"gridColorDefault":true,"width":"4","height":"4","className":"","interpolation":"linear","x":380,"y":2840,"wires":[[]]},{"id":"e0d7a0182b3c8eb7","type":"ui-group","name":"PIe Charts","page":"d0621b8f20aee671","width":"6","height":"1","order":1,"showTitle":true,"className":"","visible":"true","disabled":"false","groupType":"default"},{"id":"d0621b8f20aee671","type":"ui-page","name":"Radial Charts","ui":"ID-BASE-1","path":"/radial","icon":"home","layout":"notebook","theme":"5075a7d8e4947586","breakpoints":[{"name":"Default","px":"0","cols":"3"},{"name":"Tablet","px":"576","cols":"6"},{"name":"Small Desktop","px":"768","cols":"9"},{"name":"Desktop","px":"1024","cols":"12"}],"order":12,"className":"","visible":"true","disabled":"false"},{"id":"ID-BASE-1","type":"ui-base","name":"Dashboard","path":"/dashboard","appIcon":"","includeClientData":true,"acceptsClientConfig":["ui-control","ui-notification"],"showPathInSidebar":false,"headerContent":"page","titleBarStyle":"default","showReconnectNotification":false,"notificationDisplayTime":"1","showDisconnectNotification":true,"allowInstall":true},{"id":"5075a7d8e4947586","type":"ui-theme","name":"Default Theme","colors":{"surface":"#ffffff","primary":"#0094CE","bgPage":"#eeeeee","groupBg":"#ffffff","groupOutline":"#cccccc"},"sizes":{"pagePadding":"12px","groupGap":"12px","groupBorderRadius":"4px","widgetGap":"12px"}},{"id":"80ae9fdd5a68e69e","type":"global-config","env":[],"modules":{"@flowfuse/node-red-dashboard":"1.30.2"}}]

Indeed it is, and in fact I’d have thought it was essential for a pie chart.

Here is an example of a flow producing a pie chart of live UK electricity generation breakdown.


Code:

[{"id":"85a5c6efde2ed0bf","type":"inject","z":"68b09a573ddb66a3","name":"Every min","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":100,"y":80,"wires":[["5fe3c9ebe9f6c940"]]},{"id":"5fe3c9ebe9f6c940","type":"exec","z":"68b09a573ddb66a3","command":"curl -X GET https://api.carbonintensity.org.uk/generation  -H 'Accept: application/json'","addpay":"","append":"","useSpawn":"false","timer":"","winHide":false,"oldrc":false,"name":"GET","x":250,"y":80,"wires":[["cf20b224a2fd8496"],[],[]]},{"id":"cf20b224a2fd8496","type":"json","z":"68b09a573ddb66a3","name":"","property":"payload","action":"","pretty":false,"x":390,"y":80,"wires":[["67fe961f3075204e"]]},{"id":"67fe961f3075204e","type":"change","z":"68b09a573ddb66a3","name":"to payload","rules":[{"t":"move","p":"payload.data.generationmix","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"now","pt":"msg","to":"object","tot":"date"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":80,"wires":[["8eda54fb79f0f4c9","5f7359518d2031a8","d9b7de057ec29fcd"]]},{"id":"8eda54fb79f0f4c9","type":"ui-text","z":"68b09a573ddb66a3","group":"e0d7a0182b3c8eb7","order":1,"width":0,"height":0,"name":"","label":"Updated at","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","value":"now","valueType":"msg","x":710,"y":60,"wires":[]},{"id":"5f7359518d2031a8","type":"ui-chart","z":"68b09a573ddb66a3","group":"e0d7a0182b3c8eb7","name":"live chart 4x6","label":"Live Generation Mix 4x6","order":3,"chartType":"pie","category":"topic","categoryType":"msg","xAxisLabel":"","xAxisProperty":"fuel","xAxisPropertyType":"property","xAxisType":"radial","xAxisFormat":"","xAxisFormatType":"auto","xmin":"","xmax":"","yAxisLabel":"","yAxisProperty":"perc","yAxisPropertyType":"property","ymin":"","ymax":"","bins":10,"action":"replace","stackSeries":false,"pointShape":"circle","pointRadius":4,"showLegend":true,"removeOlder":1,"removeOlderUnit":"3600","removeOlderPoints":"","colors":["#0095ff","#ff0000","#ff7f0e","#2ca02c","#a347e1","#d62728","#ff9896","#9467bd","#c5b0d5"],"textColor":["#666666"],"textColorDefault":true,"gridColor":["#e5e5e5"],"gridColorDefault":true,"width":"4","height":"6","className":"","interpolation":"linear","x":710,"y":100,"wires":[[]]},{"id":"d9b7de057ec29fcd","type":"debug","z":"68b09a573ddb66a3","name":"debug 8","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":700,"y":140,"wires":[]},{"id":"e0d7a0182b3c8eb7","type":"ui-group","name":"Defaults","page":"d0621b8f20aee671","width":"4","height":"1","order":1,"showTitle":true,"className":"","visible":"true","disabled":"false","groupType":"default"},{"id":"d0621b8f20aee671","type":"ui-page","name":"Charts","ui":"d0aaeb56c796f1d4","path":"/charts","icon":"home","layout":"grid","theme":"5075a7d8e4947586","breakpoints":[{"name":"Default","px":"0","cols":"3"},{"name":"Tablet","px":"576","cols":"6"},{"name":"Small Desktop","px":"768","cols":"9"},{"name":"Desktop","px":"1024","cols":"12"}],"order":3,"className":"","visible":"true","disabled":"false"},{"id":"d0aaeb56c796f1d4","type":"ui-base","name":"My Dashboard","path":"/dashboard","appIcon":"","includeClientData":false,"acceptsClientConfig":["ui-notification","ui-control"],"showPathInSidebar":false,"headerContent":"page","navigationStyle":"default","titleBarStyle":"default","showReconnectNotification":true,"notificationDisplayTime":1,"showDisconnectNotification":true,"allowInstall":true},{"id":"5075a7d8e4947586","type":"ui-theme","name":"Default Theme","colors":{"surface":"#ffffff","primary":"#0094CE","bgPage":"#eeeeee","groupBg":"#ffffff","groupOutline":"#cccccc"},"sizes":{"pagePadding":"12px","groupGap":"12px","groupBorderRadius":"4px","widgetGap":"12px","density":"default"}},{"id":"2e031d568b8f0706","type":"global-config","env":[],"modules":{"@flowfuse/node-red-dashboard":"1.30.2"}}]

A sample of the data:

[{"fuel":"biomass","perc":3.1},
{"fuel":"coal","perc":0},
{"fuel":"imports","perc":3.5},
{"fuel":"gas","perc":13.7},
{"fuel":"nuclear","perc":15},
{"fuel":"other","perc":0},
{"fuel":"hydro","perc":0},
{"fuel":"solar","perc":0.5},
{"fuel":"wind","perc":64.1}]

Hello @Colin and @jbudd

Thanks both of you for your replies.

In some other threads, I had seen these examples already.
Nevertheless it was very helpful, as it shows that for every different slice you have to create a message, either as elements in an array, what you both did, or as separate messages. I think in my case, because I have to convert the output of the "contrib-os" node to something that can be used by the "ui-chart" node, it is easier to split the object into separate parts and copy the key to msg.topic and use the msg property instead of the key.

I think I understand now how the node "ui-chart" functions and how to format the input data for it.

But because the difference between used memory and free memory is huge, the widget is not really "nice looking". So I'm not sure to present the memory in this way.

Again, thank you and regards.

If the used memory is very small compared to the available, then why bother to show it?

Hi @Colin,

I agree with you, that if it is that small, nobody should bother about it. But as I'm building a new Home Automation system with Node-RED and Dashboard 2, I'm pretty sure that the memory usage will increase over time, if I add more nodes.

And it looks already better, as i use now the principle, that the used memory equals (totalmem - freemem) See: Monitoring Device Health and Performance at Scale with FlowFuse • FlowFuse

I have one issue left:

In spite of the fact that I ticked the box "Show Legend", the legend is not visible.
Any idea?

Regards

Does the example I posted above show all the legends?

If the normal situation is that memory used is tiny in comparison to free memory, maybe a better way to display them is as a battery charge type gauge showing free memory, or a normal gauge showing memory in use?

Hi @jbudd

Yes it does.

If you run the command top and also check the memory in that node, which data from top is the node showing?

It's ok, I have just checked and the node does correctly provide the available memory from top not the free memory. I think it would have been better called availableMem in the node rather than free.

The

If you export your flow with an inject node to give your sample data, we can probably understand why you only see one legend.

That suggests that you have not provided a series name for the blue section. Show us the data you are sending to the node.

Hello @Colin and @jbudd

@Colin

You requested:

As you have run the test yourself already and as it is okay, I ignore your request for the time being.

I agree, but now we know that, it is okay for me.

As both of you ask for the flow, I'll send it hereby:

[
    {
        "id": "1f9632172a1fd361",
        "type": "inject",
        "z": "9c0d52e915a7855c",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "{\"totalmem\": 15871.977, \"freemem\": 15217.141, \"memusage\": 4.13}",
        "payloadType": "json",
        "x": 310,
        "y": 520,
        "wires": [
            [
                "b14cc9ebe5d65367"
            ]
        ]
    },
    {
        "id": "0d6f717c898aef2f",
        "type": "inject",
        "z": "9c0d52e915a7855c",
        "name": "Clear Dashboard",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "[]",
        "payloadType": "jsonata",
        "x": 700,
        "y": 560,
        "wires": [
            [
                "566f066b9afd9460"
            ]
        ]
    },
    {
        "id": "566f066b9afd9460",
        "type": "ui-chart",
        "z": "9c0d52e915a7855c",
        "group": "d8b900ab4f0a19c7",
        "name": "Memory Usage",
        "label": "Memory Usage",
        "order": 7,
        "chartType": "pie",
        "category": "",
        "categoryType": "none",
        "xAxisLabel": "",
        "xAxisProperty": "topic",
        "xAxisPropertyType": "msg",
        "xAxisType": "radial",
        "xAxisFormat": "",
        "xAxisFormatType": "auto",
        "xmin": "",
        "xmax": "",
        "yAxisLabel": "",
        "yAxisProperty": "payload",
        "yAxisPropertyType": "msg",
        "ymin": "",
        "ymax": "",
        "bins": 10,
        "action": "append",
        "stackSeries": false,
        "pointShape": "circle",
        "pointRadius": 4,
        "showLegend": true,
        "removeOlder": 1,
        "removeOlderUnit": "3600",
        "removeOlderPoints": "",
        "colors": [
            "#0095ff",
            "#ff0000",
            "#ff7f0e",
            "#2ca02c",
            "#a347e1",
            "#d62728",
            "#ff9896",
            "#9467bd",
            "#c5b0d5"
        ],
        "textColor": [
            "#000000"
        ],
        "textColorDefault": true,
        "gridColor": [
            "#e5e5e5"
        ],
        "gridColorDefault": true,
        "width": "3",
        "height": "3",
        "className": "",
        "interpolation": "linear",
        "x": 920,
        "y": 520,
        "wires": [
            []
        ]
    },
    {
        "id": "050b16ab213c5bfa",
        "type": "split",
        "z": "9c0d52e915a7855c",
        "name": "Split Object",
        "splt": "\\n",
        "spltType": "str",
        "arraySplt": 1,
        "arraySpltType": "len",
        "stream": false,
        "addname": "topic",
        "property": "payload",
        "x": 710,
        "y": 520,
        "wires": [
            [
                "566f066b9afd9460"
            ]
        ]
    },
    {
        "id": "b14cc9ebe5d65367",
        "type": "change",
        "z": "9c0d52e915a7855c",
        "name": "Delete totalmem",
        "rules": [
            {
                "t": "set",
                "p": "payload.memusage",
                "pt": "msg",
                "to": "$round((payload.totalmem - payload.freemem),3)",
                "tot": "jsonata"
            },
            {
                "t": "delete",
                "p": "payload.totalmem",
                "pt": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 500,
        "y": 520,
        "wires": [
            [
                "050b16ab213c5bfa"
            ]
        ]
    },
    {
        "id": "d8b900ab4f0a19c7",
        "type": "ui-group",
        "name": "NUC",
        "page": "3a65776f23b1f919",
        "width": "12",
        "height": "1",
        "order": 1,
        "showTitle": true,
        "className": "",
        "visible": "true",
        "disabled": "false",
        "groupType": "default"
    },
    {
        "id": "3a65776f23b1f919",
        "type": "ui-page",
        "name": "Jonas Dashboard",
        "ui": "0d2858cb229ee66f",
        "path": "/page1",
        "icon": "home",
        "layout": "grid",
        "theme": "02a2adba40ee86a4",
        "breakpoints": [
            {
                "name": "Default",
                "px": "0",
                "cols": "3"
            },
            {
                "name": "Tablet",
                "px": "576",
                "cols": "6"
            },
            {
                "name": "Small Desktop",
                "px": "768",
                "cols": "9"
            },
            {
                "name": "Desktop",
                "px": "1024",
                "cols": "12"
            }
        ],
        "order": 1,
        "className": "",
        "visible": "true",
        "disabled": "false"
    },
    {
        "id": "0d2858cb229ee66f",
        "type": "ui-base",
        "name": "Jonas Dashboard",
        "path": "/dashboard",
        "appIcon": "",
        "includeClientData": true,
        "acceptsClientConfig": [
            "ui-notification",
            "ui-control"
        ],
        "showPathInSidebar": false,
        "headerContent": "page",
        "navigationStyle": "default",
        "titleBarStyle": "default",
        "showReconnectNotification": true,
        "notificationDisplayTime": 1,
        "showDisconnectNotification": true,
        "allowInstall": false
    },
    {
        "id": "02a2adba40ee86a4",
        "type": "ui-theme",
        "name": "Jonas Theme",
        "colors": {
            "surface": "#0047ab",
            "primary": "#0094ce",
            "bgPage": "#6d8196",
            "groupBg": "#e0e0e0",
            "groupOutline": "#000000"
        },
        "sizes": {
            "density": "default",
            "pagePadding": "12px",
            "groupGap": "12px",
            "groupBorderRadius": "4px",
            "widgetGap": "12px"
        }
    },
    {
        "id": "15edb07dfc1bdca9",
        "type": "global-config",
        "env": [],
        "modules": {
            "@flowfuse/node-red-dashboard": "1.30.2"
        }
    }
]

@Colin said:

You are right, I did not add anything for "series", as you can see.

If you have a solution ( I play also with this flow myself), I will be thankful

Regards

[Admin edit] Removed extra text in flow to make it importable.

I didn't ask for the flow, I asked

@Colin ,

Sorry for the misunderstanding, but as @jbudd asked for the flow, I decided to send the complete flow with an Inject node.

As it is quite late already, I will send the data tomorrow.

Regarda

Regarding the missing legend, this is related to the way the chart.js code allocates space for a pie chart and it's legends.
There was a thread about it at The size of a pie chart

I think you have to address it with msg.ui_update, slightly shrinking the pie and leaving more space for the legend.
For instance:

[{"id":"86e3b1d66926f4fd","type":"change","z":"d2cca1d7ae48fc5a","name":"","rules":[{"t":"set","p":"ui_update","pt":"msg","to":"{\"chartOptions\":{\"series\":[{\"name\":\"\",\"type\":\"pie\",\"radius\":[\"0%\",\"50%\"],\"center\":[\"50%\",\"50%\"]}]}}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":630,"y":320,"wires":[["b17c8b305bc44e13"]]},{"id":"6e31e7ec85c3d61e","type":"inject","z":"d2cca1d7ae48fc5a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"totalmem\": 15871.977, \"freemem\": 15217.141, \"memusage\": 4.13}","payloadType":"json","x":130,"y":320,"wires":[["ccccc8698ead7945"]]},{"id":"d1ee9925ca9f325e","type":"inject","z":"d2cca1d7ae48fc5a","name":"Clear Dashboard","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[]","payloadType":"jsonata","x":640,"y":360,"wires":[["b17c8b305bc44e13"]]},{"id":"b17c8b305bc44e13","type":"ui-chart","z":"d2cca1d7ae48fc5a","group":"d8b900ab4f0a19c7","name":"Memory Usage","label":"Memory Usage","order":7,"chartType":"pie","category":"","categoryType":"none","xAxisLabel":"","xAxisProperty":"topic","xAxisPropertyType":"msg","xAxisType":"radial","xAxisFormat":"","xAxisFormatType":"auto","xmin":"","xmax":"","yAxisLabel":"","yAxisProperty":"payload","yAxisPropertyType":"msg","ymin":"","ymax":"","bins":10,"action":"append","stackSeries":false,"pointShape":"circle","pointRadius":4,"showLegend":true,"removeOlder":1,"removeOlderUnit":"3600","removeOlderPoints":"","colors":["#0095ff","#ff0000","#ff7f0e","#2ca02c","#a347e1","#d62728","#ff9896","#9467bd","#c5b0d5"],"textColor":["#000000"],"textColorDefault":true,"gridColor":["#e5e5e5"],"gridColorDefault":true,"width":"3","height":"3","className":"","interpolation":"linear","x":840,"y":320,"wires":[[]]},{"id":"b15db461f41e2f6a","type":"split","z":"d2cca1d7ae48fc5a","name":"Split Object","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","property":"payload","x":450,"y":320,"wires":[["86e3b1d66926f4fd"]]},{"id":"ccccc8698ead7945","type":"change","z":"d2cca1d7ae48fc5a","name":"Delete totalmem","rules":[{"t":"set","p":"payload.memusage","pt":"msg","to":"$round((payload.totalmem - payload.freemem),3)","tot":"jsonata"},{"t":"delete","p":"payload.totalmem","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":280,"y":320,"wires":[["b15db461f41e2f6a"]]},{"id":"d8b900ab4f0a19c7","type":"ui-group","name":"NUC","page":"3a65776f23b1f919","width":"12","height":"1","order":1,"showTitle":true,"className":"","visible":"true","disabled":"false","groupType":"default"},{"id":"3a65776f23b1f919","type":"ui-page","name":"Jonas Dashboard","ui":"d45641ed6d39fea1","path":"/page1","icon":"home","layout":"grid","theme":"02a2adba40ee86a4","breakpoints":[{"name":"Default","px":"0","cols":"3"},{"name":"Tablet","px":"576","cols":"6"},{"name":"Small Desktop","px":"768","cols":"9"},{"name":"Desktop","px":"1024","cols":"12"}],"order":1,"className":"","visible":"true","disabled":"false"},{"id":"d45641ed6d39fea1","type":"ui-base","name":"base","path":"/dashboard","appIcon":"","includeClientData":true,"acceptsClientConfig":["ui-notification","ui-control"],"showPathInSidebar":false,"navigationStyle":"default","titleBarStyle":"default","showReconnectNotification":false,"notificationDisplayTime":5,"showDisconnectNotification":false},{"id":"02a2adba40ee86a4","type":"ui-theme","name":"Jonas Theme","colors":{"surface":"#0047ab","primary":"#0094ce","bgPage":"#6d8196","groupBg":"#e0e0e0","groupOutline":"#000000"},"sizes":{"density":"default","pagePadding":"12px","groupGap":"12px","groupBorderRadius":"4px","widgetGap":"12px"}},{"id":"37a489d9f16999d4","type":"global-config","env":[],"modules":{"@flowfuse/node-red-dashboard":"1.30.2"}}]

You might find this thread useful to explore pie chart customisation

Edit: I've been using the word legend in this thread where I should have said label, apologies.

The legend is of course a separate block listing the visible pie sectors, while "memusage" on your example is a label.

Both labels and legends are adversely affected by the chart.js code mis-sizing the gauge in a Node-red widget

I don't think it is that issue, note that even the line from the text to the pie is not shown.

A comparison with/without an adjustment via msg.ui_update.

The issue does not affect just the text; the lines and even the lower edge of the pie may be lost, as in this case.

Yes, you are quite right, it is that issue, I was just about to post a correction, but I see you have beaten me to it.

@FireWizard52 if you import this Inject node and connect it to the chart then it will adjust the size. You can adjust the 65% figure in there to optimise it for your chart.

[{"id":"44e0e6490180310d","type":"inject","z":"997da33a0beedade","name":"Size","props":[{"p":"ui_update","v":"{\"chartOptions\":{\"series\":[{\"type\":\"pie\",\"radius\":[\"0%\",\"65%\"]}]}}","vt":"json"}],"repeat":"","crontab":"","once":true,"onceDelay":"1","topic":"","x":550,"y":4920,"wires":[["566f066b9afd9460"]]}]

Hello @Colin and @jbudd

First of all.
Thank you both for investigating this issue.

@jbudd,

I had seen one of the threads before already, so my thoughts went also in the direction of the size of the pie.

One funny thing I noticed, is that, if I put some text (doesn't matter what) in the field "Series" I get a legend. Even a single space will do.