How to plot Nightingale Rose Chart in Matlab

Hi all, I want to create a pie chart (Nightingale Rose Chart) Does anyone know how to do this?
TIM图片20190826150522.jpg
This pie chart is an example of what I would like to achieve.
Hopefully this makes it a bit clearer. Thanks in advance!

1 Comment

It looks like polarhistogram is what you want. It looks like you will need to scale your data to be from 0 to 2pi and text can be put in with the text command. I am not sure how you could do color but it may be possible.

Sign in to comment.

 Accepted Answer

Hi,
In my understanding the pie charts you are trying to plot can be drawn using polarhistogram. From the figure you have attached I can see there are 6 bins in the polarhistogram object.
I am assuming you have the background figure that is similar to a map. So, you can generate the individual polarhistogram using below code:
close all
p = polaraxes;
polarhistogram(p,'BinEdges', linspace(0,2*pi,7),'BinCounts',[0.3 0.1 0.2 0.8 0.57 0.7]);
p.RLim = [0 1];
p.ThetaTick = [];
p.RTickLabel = {};
The ‘BinCounts’ parameter can be changed based on the values you have in each category.
For Adding Multiple polarhistogram you may use App Designer. In that you can add multiple Polar Axes on top of the figure that contains the map. For drawing polarhistogram you need to have the positions of the axes.
Currently for plotting Nightingale Rose Chart directly with a function is not supported. You may use App Designer for plotting separately every individual object.
You may refer to following for using App Designer:

More Answers (2)

suling yin
suling yin on 3 Sep 2019
Edited: suling yin on 3 Sep 2019
Thanks Raunak Gupta ,
One more question: how can I set different color for each category in your example above.
Regards,

3 Comments

Hi,
You can plot seperate categories as below but for legend you have to enter them as a text field in App Designer. For putting seperate color without plotting seperate part is there in histogram but not in polarhistogram. So , you can use below for plotting one pie chart.
close all
p = polaraxes;
polarhistogram(p,'BinEdges',[0 pi/3],'BinCounts',[0.56]);
hold on
polarhistogram(p,'BinEdges',[pi/3 2*pi/3],'BinCounts',[0.65]);
polarhistogram(p,'BinEdges',[2*pi/3 pi],'BinCounts',[0.35]);
polarhistogram(p,'BinEdges',[pi 4*pi/3],'BinCounts',[0.8]);
polarhistogram(p,'BinEdges',[4*pi/3 5*pi/3],'BinCounts',[0.57]);
polarhistogram(p,'BinEdges',[5*pi/3 2*pi],'BinCounts',[0.7]);
p.RLim = [0 1];
p.ThetaTick = [];
p.RTickLabel = {};
hold off
Hope this helps.
It is great help.
And can I specify the color for each categories ?
Hi,
While plotting a single polarhistogram you may mention the color with 'FaceColor' option with predefined color string or RGB triplets.
Hope it helps.

Sign in to comment.

It is great help.
And can I specify the color for each categories ?

Products

Release

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!